CodeForge

Python de Cero a Experto / Python intermedio

argparse: herramientas de línea de comandos

Teoría20 min20 XP

Un script que solo corre con valores fijos es limitado. Las herramientas profesionales reciben ARGUMENTOS desde la línea de comandos: git commit -m "mensaje", python script.py archivo.txt --verbose. El módulo argparse convierte tu script en una herramienta así: define qué argumentos y opciones acepta, los parsea, valida, y hasta genera una ayuda automática. Hoy aprendes a construir CLIs (interfaces de línea de comandos) —la base de la ruta de scripting—.

El programa que acepta instrucciones

Recibir argumentos con argparse

Como los argumentos de línea de comandos se leen al ejecutar el script en una terminal (algo que este entorno del navegador no tiene), esta lección muestra el código y su uso con bloques —pruébalo en tu Python instalado—:

gastos.py
import argparse

# 1. crear el parser (con una descripción para la ayuda)
parser = argparse.ArgumentParser(description="Registra un gasto en Mi Bolsillo")

# 2. definir los argumentos
parser.add_argument("nombre", help="nombre del gasto")            # obligatorio (posicional)
parser.add_argument("valor", type=int, help="valor del gasto")    # obligatorio, convertido a int
parser.add_argument("--categoria", default="otros", help="categoría del gasto")  # opcional
parser.add_argument("--iva", action="store_true", help="aplicar IVA")            # bandera on/off

# 3. parsear lo que el usuario escribió
args = parser.parse_args()

# 4. usar los valores
total = args.valor * 1.19 if args.iva else args.valor
print(f"{args.nombre}: {total:,.0f} ({args.categoria})")

Se ejecuta desde la terminal pasándole los argumentos:

terminal

$ python gastos.py Café 4000 --categoria comida

Café: 4,000 (comida)

$ python gastos.py Mercado 87500 --categoria comida --iva

Mercado: 104,125 (comida)

$ python gastos.py --help

usage: gastos.py [-h] [--categoria CATEGORIA] [--iva] nombre valor

Registra un gasto en Mi Bolsillo

ArgumentParser crea el "panel de controles". add_argument define cada control: los POSICIONALES (nombre, valor) son obligatorios y van en orden; los que empiezan con -- (--categoria) son OPCIONALES; action="store_true" crea una BANDERA on/off (--iva está o no está). type=int convierte y valida automáticamente. parse_args() lee lo que el usuario escribió y lo deja en args. Y gratis: --help genera una ayuda completa, y si el usuario se equivoca (falta un argumento, un tipo inválido), argparse muestra un error claro.

Por qué argparse y no leer sys.argv

¿Qué hace argparse y cuál es la diferencia entre un argumento posicional y uno con --?

Mini-reto

Diseña (en tu Python instalado, o en papel) una CLI para Mi Bolsillo: 1) un ArgumentParser con una descripción; 2) un argumento posicional obligatorio archivo (el JSON de gastos a leer) y una opción --categoria para filtrar; 3) una bandera --total que, si está, muestre solo el total; 4) escribe cómo lo invocarías desde la terminal (python reporte.py gastos.json --categoria comida --total). Piensa qué mensaje daría --help.

Qué sigue

¡Módulo 5 conquistado! Ya manejas errores, recursos, archivos y los formatos del mundo real, y construyes herramientas de línea de comandos. El reto del módulo junta todo en un procesador de datos robusto. Después, el módulo 6 trae el Python AVANZADO —generadores, decoradores, typing moderno y más— las técnicas que separan al programador intermedio del experto.