Learning Center
Programación en Python

Opciones de línea de comandos y análisis de argumentos con argparse en Python

25 nov 2025
Hostman Team
Hostman Team

Las interfaces de línea de comandos (CLIs) son uno de los medios más rápidos y eficaces para interactuar con software. Permiten ejecutar comandos directamente, lo que conduce a una ejecución más rápida y a funciones más avanzadas. Los desarrolladores suelen crear CLIs en Python para múltiples aplicaciones, utilidades y scripts de automatización, permitiendo procesar dinámicamente la entrada del usuario. Aquí es donde entra en juego el módulo argparse de Python.

El módulo argparse simplifica el procesamiento de argumentos de la línea de comandos y permite a los desarrolladores crear utilidades interactivas y fáciles de usar. Al ser parte de la biblioteca estándar, permite definir, procesar y validar entradas sin necesidad de lógica compleja.

En este artículo veremos los conceptos más importantes, ejemplos prácticos y funciones avanzadas del módulo argparse, para que puedas comenzar a construir herramientas de línea de comandos robustas de inmediato.

Cómo usar argparse en Python para interfaces de línea de comandos
Copiar enlace

Paso 1: Importar el módulo
Copiar enlace

Importa el módulo en tu script:

import argparse

Esto habilita el análisis de argumentos .py desde la línea de comandos.

Paso 2: Crear un objeto ArgumentParser
Copiar enlace

La clase ArgumentParser es la clase más básica de la API del módulo argparse. Para utilizarla, crea una instancia:

parser = argparse.ArgumentParser(description="A Hostman tutorial on Python argparse.")

Aquí:

  • description explica lo que hace el programa y se muestra cuando el usuario ejecuta --help.

Paso 3: Añadir argumentos y opciones
Copiar enlace

Define los parámetros que acepta tu programa con add_argument():

parser.add_argument('filename', type=str, help="Name of the file to process")

parser.add_argument('--verbose', action='store_true', help="Enable verbose mode")

Explicación:

  • filename es obligatorio.

  • --verbose es opcional y activa el modo detallado.

Paso 4: Analizar la entrada del usuario
Copiar enlace

Procesa los argumentos proporcionados:

args = parser.parse_args()

Esto almacena los valores como atributos del objeto args.

Paso 5: Acceder a los datos procesados
Copiar enlace

Ejemplo:

print(f"File to process: {args.filename}")

if args.verbose:

    print("Verbose mode enabled")

else:

    print("Verbose mode disabled")

Ejemplos de uso del CLI
Copiar enlace

Procesar archivo sin modo verbose
Copiar enlace

python3 file.py example.txt

Procesar archivo con modo verbose
Copiar enlace

python3 file.py example.txt --verbose

Mostrar ayuda
Copiar enlace

python3 file.py --help

Ejemplos comunes de uso de argparse
Copiar enlace

Ejemplo 1: Añadir valores predeterminados
Copiar enlace

Algunos argumentos opcionales necesitan valores predeterminados. En este ejemplo, --timeout tiene un valor por defecto de 30 segundos:

import argparse

parser = argparse.ArgumentParser(description="Demonstrating default argument values.")

parser.add_argument('--timeout', type=int, default=30, help="Timeout in seconds (default: 30)")

args = parser.parse_args()

print(f"Timeout value: {args.timeout} seconds")

Explicación

  • Importación del módulo

  • Creación del ArgumentParser

  • --timeout con type=int y valor por defecto

  • Procesamiento con parse_args()

Caso 1: valor predeterminado

python file.py

Caso 2: valor personalizado

python file.py --timeout 60

Ejemplo 2: Uso de choices
Copiar enlace

El parámetro choices limita un argumento a un conjunto de valores válidos:

parser.add_argument('--mode', choices=['basic', 'advanced'], help="Choose the mode of operation")

Caso 1: válido

python3 file.py --mode basic

Caso 2: sin valor

python3 file.py

Caso 3: valor inválido

python3 file.py --mode intermediate

Ejemplo 3: Manejar múltiples valores
Copiar enlace

El parámetro nargs='+' permite aceptar varios valores:

parser.add_argument('--numbers', nargs='+', type=int, help="List of numbers to process")

Caso 1: múltiples números

python3 file.py --numbers 10 20 30

Caso 2: un número

python3 file.py --numbers 5

Caso 3: sin input

python3 file.py

Caso 4: valor no válido

python3 file.py --numbers 10 abc 20

Ejemplo 4: Argumentos opcionales obligatorios
Copiar enlace

Aunque los argumentos con -- son opcionales por defecto, puedes hacerlos obligatorios usando required=True:

parser.add_argument('--config', required=True, help="Path to the configuration file")

Caso 1: válido

python3 file.py --config settings.json

Caso 2: sin el argumento obligatorio

python3 file.py

Funciones avanzadas
Copiar enlace

Flags booleanas
Copiar enlace

parser.add_argument('--debug', action='store_true', help="Enable debugging mode")

Agrupar argumentos relacionados
Copiar enlace

group = parser.add_argument_group('File Operations')

group.add_argument('--input', type=str, help="Input file")

group.add_argument('--output', type=str, help="Output file")

Argumentos mutuamente excluyentes
Copiar enlace

group = parser.add_mutually_exclusive_group()

group.add_argument('--json', action='store_true', help="Output in JSON format")

group.add_argument('--xml', action='store_true', help="Output in XML format")

Conclusión
Copiar enlace

El módulo argparse facilita la creación de CLIs fiables para gestionar argumentos de línea de comandos en Python. Desde opciones básicas hasta características avanzadas como choices y nargs, los desarrolladores pueden construir herramientas robustas y fáciles de usar. Dar nombres claros a los argumentos y escribir buenas descripciones ayuda a mantener tus scripts legibles y fáciles de mantener.