Python de Cero a Experto / Python intermedio
argparse: herramientas de línea de comandos
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—:
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:
$ 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.