- 1 1. Introducción
- 2 2. ¿Qué son las opciones de línea de comandos de Python?
- 3 3. Cómo manejar opciones de línea de comandos en Python
- 4 4. [Python] Uso de argparse
- 5 5. [Python] Uso de Click
- 6 6. [Python] Uso de Typer
- 7 7. ¿Qué biblioteca debería elegir?
- 8 8. FAQ (Preguntas frecuentes)
1. Introducción
Python es un lenguaje de programación flexible y potente que es utilizado por muchos desarrolladores. Entre sus características, al aprovechar las opciones de línea de comandos, se puede mejorar la operatividad de scripts o aplicaciones.
En este artículo, explicaremos exhaustivamente cómo manejar opciones de línea de comandos en Python. Específicamente, introduciremos tres: la biblioteca estándar argparse
, y las bibliotecas externas Click
y Typer
, y también explicaremos sus diferencias y cómo elegir entre ellas.
2. ¿Qué son las opciones de línea de comandos de Python?
Al usar opciones de línea de comandos en Python, puedes pasar argumentos durante la ejecución del script para controlar su comportamiento. Por ejemplo, consideremos un script como el siguiente.
python script.py --name Alice --age 25
De esta manera, al utilizar argumentos de opciones, los usuarios pueden personalizar el comportamiento del script.
2.1 ¿Por qué es necesario el análisis de opciones?
Al crear scripts en Python, también puedes recibir entrada desde la entrada estándar, pero al aprovechar las opciones de línea de comandos, puedes proporcionar una interfaz de usuario flexible e intuitiva. Hay ventajas como las siguientes.
- Mejora la versatilidad del script (se puede ejecutar con diferentes parámetros)
- Posible interactuar con el usuario sin crear una GUI (adecuado para operaciones en terminal)
- Posible cambiar el comportamiento sin archivos de configuración
Python tiene varias bibliotecas para analizar opciones de línea de comandos de diferentes maneras. Entre ellas, las tres más importantes son las siguientes.
2.2 argparse
・Click
・Typer
Comparación
Hay varias formas de analizar opciones de línea de comandos en Python, pero he resumido las representativas en una tabla.
Biblioteca | Características | Facilidad de uso | Usos recomendados |
---|---|---|---|
argparse | Biblioteca estándar de Python y herramienta integrada | Medio | Scripts de pequeña a mediana escala |
Click | Intuitivo y permite crear comandos fácilmente | Alto | Aplicaciones CLI a gran escala |
Typer | Aprovecha las sugerencias de tipo para manejar Click de manera más pythonica | Alto | Diseño de API y procesamiento de datos |
3. Cómo manejar opciones de línea de comandos en Python
Hay varias formas de analizar opciones de línea de comandos en Python, pero las bibliotecas representativas sonargparse
(biblioteca estándar), Click
(biblioteca externa), Typer
(compatible con hints de tipo).
Aquí, explicaremos las características y el uso básico de cada biblioteca.
3.1 argparse
: Método de implementación con la biblioteca estándar
argparse
es una biblioteca incluida de forma estándar en Python, por lo que se puede usar sin instalación adicional. Permite el análisis básico de argumentos y la generación automática de mensajes de ayuda.
Características principales de argparse
- Como es la biblioteca estándar de Python, no requiere instalación adicional
- Es posible configurar fácilmente argumentos obligatorios y argumentos opcionales
- Genera automáticamente mensajes de ayuda
Ejemplo de uso
El siguiente código es un script simple que usa argparse
para recibir y mostrar un argumento de opción llamado --name
|.
import argparse
# Creación del objeto ArgumentParser
parser = argparse.ArgumentParser(description="Ejemplo de argumentos de línea de comandos en Python")
# Agregar opción de línea de comandos
parser.add_argument("--name", type=str, required=True, help="Especifique el nombre")
# Analizar argumentos
args = parser.parse_args()
# Mostrar resultado
print(f"¡Hola, {args.name}!")
Ejemplo de ejecución
python script.py --name Alice
Salida
¡Hola, Alice!
De esta manera, usando la argparse
estándar de Python, se pueden procesar fácilmente los argumentos de opción.
3.2 Click
: Método de descripción más conciso
Click
es una biblioteca que utiliza decoradores para describir opciones de línea de comandos de manera intuitiva. Se puede implementar el mismo procesamiento con código más conciso que argparse
|.
Instalación de Click
Click es una biblioteca externa, por lo que es necesario instalarla previamente.
pip install click
Ejemplo de uso
El siguiente es un ejemplo de procesamiento de la opción --name
utilizando Click
|.
import click
@click.command()
@click.option("--name", prompt="¿Cuál es tu nombre?", help="Especifique el nombre")
def greet(name):
click.echo(f"¡Hola, {name}!")
if __name__ == "__main__":
greet()
Ejemplo de ejecución
python script.py
Salida
¿Cuál es tu nombre? Alice
¡Hola, Alice!
De esta manera, usando Click
, también es posible recibir entrada del usuario utilizando prompts.
3.3 Typer
: Descripción intuitiva utilizando hints de tipo
Typer
es una biblioteca construida sobre la base de Click
, y su característica es que utiliza hints de tipo de Python para una descripción más intuitiva.
Instalación de Typer
Typer
también es una biblioteca externa, por lo que es necesario instalarla previamente.
pip install typer
Ejemplo de uso
El siguiente es un ejemplo de procesamiento de la opción --name
utilizando Typer
|.
import typer
app = typer.Typer()
@app.command()
def greet(name: str):
print(f"¡Hola, {name}!")
if __name__ == "__main__":
app()
Ejemplo de ejecución
python script.py greet --name Alice
Salida
¡Hola, Alice!
De esta manera, usando Typer
, se pueden tratar los argumentos de la función directamente como opciones de línea de comandos, lo que permite escribir código más intuitivo.
Resumen
Biblioteca | Características | Usos | Necesidad de instalación |
---|---|---|---|
argparse | Biblioteca estándar, no requiere instalación adicional | Scripts pequeños | No |
Click | Posible describir de manera concisa utilizando decoradores | Aplicaciones CLI a gran escala | Sí |
Typer | Descripción de código intuitiva utilizando hints de tipo | Desarrollo de API o procesamiento de datos | Sí |

4. [Python] Uso de argparse
La biblioteca estándar de Python, argparse
, es una herramienta poderosa para analizar opciones de línea de comandos. En esta sección, explicamos en detalle desde el uso básico hasta las aplicaciones avanzadas de argparse
.
4.1 ¿Qué es argparse?
argparse
es una biblioteca incluida de forma estándar en Python y permite analizar fácilmente los argumentos al ejecutar un script. Es más concisa y legible que procesar directamente sys.argv
, y también cuenta con funciones como la generación automática de mensajes de ayuda.
Características de argparse
- Biblioteca estándar, por lo que no requiere instalación adicional
- Fácil configuración de argumentos obligatorios y opcionales
- Genera automáticamente mensajes de ayuda
- Permite definir fácilmente argumentos de diferentes tipos de datos
4.2 Uso básico
Veamos primero el uso básico de argparse
.
Ejemplo de análisis de argumentos simple
En el siguiente código, creamos un script que recibe el argumento de línea de comandos --name
y muestra su valor.
import argparse
# Creación del objeto ArgumentParser
parser = argparse.ArgumentParser(description="Ejemplo de argumentos de línea de comandos en Python")
# Definición del argumento de línea de comandos
parser.add_argument("--name", type=str, required=True, help="Especifique el nombre")
# Análisis de los argumentos
args = parser.parse_args()
# Salida del resultado
print(f"¡Hola, {args.name}!")
Ejemplo de ejecución
python script.py --name Alice
Salida
¡Hola, Alice!
En este script, el argumento --name
se establece como obligatorio, por lo que se producirá un error si no se proporciona.
4.3 Argumentos obligatorios y opcionales
Con argparse
, se pueden definir dos tipos de argumentos: argumentos obligatorios (argumentos posicionales) y argumentos opcionales.
Argumentos obligatorios (argumentos posicionales)
Los argumentos posicionales son aquellos que se pasan sin especificar un nombre de opción particular.
parser.add_argument("name", type=str, help="Especifique el nombre")
Ejemplo de ejecución
python script.py Alice
Salida
¡Hola, Alice!
Argumentos opcionales
Los argumentos opcionales se pasan precedidos de --
o -
y pueden especificarse de forma opcional.
parser.add_argument("--age", type=int, help="Especifique la edad")
Ejemplo de ejecución
python script.py --age 25
Salida
Edad: 25
4.4 Configuración de valores predeterminados
También es posible establecer un valor predeterminado en caso de que no se especifique el argumento.
parser.add_argument("--city", type=str, default="Tokio", help="Especifique la ciudad")
Ejemplo de ejecución (sin argumentos)
python script.py
Salida
Ciudad: Tokio
4.5 Recepción de múltiples argumentos
Al especificar nargs="+"
, es posible recibir múltiples valores en forma de lista.
parser.add_argument("--fruits", nargs="+", help="Especifique sus frutas favoritas")
Ejemplo de ejecución
python script.py --fruits apple banana orange
Salida
Frutas favoritas: ['apple', 'banana', 'orange']
4.6 Opciones de bandera (True/False)
Al usar store_true
o store_false
, se pueden definir opciones de bandera.
parser.add_argument("--verbose", action="store_true", help="Mostrar información detallada")
Ejemplo de ejecución
python script.py --verbose
Salida
Mostrar información detallada
4.7 Generación automática de mensajes de ayuda
Con argparse
, al especificar -h
o --help
, se puede generar automáticamente un mensaje de ayuda.Ejemplo de ejecución
python script.py --help
Salida
usage: script.py [-h] --name NAME
Ejemplo de argumentos de línea de comandos en Python
optional arguments:
-h, --help show this help message and exit
--name NAME Especifique el nombre
Resumen
Función | Método |
---|---|
Argumentos obligatorios (argumentos posicionales) | parser.add_argument("name", type=str) |
Argumentos opcionales | parser.add_argument("--age", type=int) |
Configuración de valores predeterminados | parser.add_argument("--city", default="Tokio") |
Recepción de múltiples argumentos | parser.add_argument("--fruits", nargs="+") |
Opciones de bandera | parser.add_argument("--verbose", action="store_true") |
Generación automática de ayuda | python script.py --help |
5. [Python] Uso de Click
La biblioteca externa de Python Click es una herramienta poderosa que permite crear interfaces de línea de comandos (CLI) de manera más simple e intuitiva que argparse
. En esta sección, explicamos en detalle desde el uso básico de Click hasta ejemplos avanzados.
5.1 ¿Qué es Click?
Click (Command Line Interface Creation Kit) es una biblioteca para crear fácilmente herramientas CLI en Python. En comparación con argparse
, cuenta con una sintaxis intuitiva basada en decoradores y es adecuada para gestionar múltiples subcomandos.
Características de Click
- Sintaxis simple que aprovecha los decoradores
- Posibilidad de crear fácilmente subcomandos con estructura anidada
- Función de prompt (función para solicitar entrada) incluida de forma estándar
- Generación automática de mensajes de ayuda
Al usar Click, es posible implementar CLI de manera más intuitiva y con código más corto.
5.2 Instalación de Click
Click no es parte de la biblioteca estándar, por lo que es necesario instalarla previamente.
pip install click
5.3 Uso básico de Click
Creemos una aplicación CLI simple usando Click. El siguiente código es un script que recibe la opción --name
y muestra un saludo.
Script básico de Click
import click
@click.command()
@click.option("--name", prompt="¿Cuál es tu nombre?", help="Especifique el nombre")
def greet(name):
click.echo(f"¡Hola, {name}!")
if __name__ == "__main__":
greet()
Ejemplo de ejecución
python script.py
Salida
¿Cuál es tu nombre? Alice
¡Hola, Alice!
Puntos clave
@click.command()
: Define la función como un comando CLI@click.option("--name", prompt="¿Cuál es tu nombre?")
: Define un argumento de opción y, si no se proporciona entrada, lo solicita mediante un promptclick.echo()
: Procesa la salida estándar de forma segura
De esta manera, con Click es posible crear CLI de forma más intuitiva que con argparse
.
5.4 Argumentos obligatorios y argumentos de opción
Con Click, es fácil definir tanto argumentos posicionales (obligatorios) como argumentos de opción.
Definición de argumentos posicionales (obligatorios)
@click.command()
@click.argument("name")
def greet(name):
click.echo(f"¡Hola, {name}!")
if __name__ == "__main__":
greet()
Ejemplo de ejecución
python script.py Alice
Salida
¡Hola, Alice!
Definición de argumentos de opción
@click.command()
@click.option("--age", type=int, help="Especifique la edad")
def show_age(age):
click.echo(f"Tu edad es {age} años.")
if __name__ == "__main__":
show_age()
Ejemplo de ejecución
python script.py --age 25
Salida
Tu edad es 25 años.
5.5 Opciones de bandera (True/False)
Con Click, al establecer is_flag=True
, es posible crear opciones de bandera para manejar valores booleanos.
Definición de opciones de bandera
@click.command()
@click.option("--verbose", is_flag=True, help="Mostrar información detallada")
def run(verbose):
if verbose:
click.echo("Ejecutando en modo detallado...")
else:
click.echo("Ejecutando en modo normal.")
if __name__ == "__main__":
run()
Ejemplo de ejecución
python script.py --verbose
Salida
Ejecutando en modo detallado...
5.6 Aplicación CLI con múltiples opciones
Con Click, es fácil crear aplicaciones CLI con múltiples opciones.
Ejemplo que combina múltiples opciones
@click.command()
@click.option("--name", default="Invitado", help="Especifique el nombre")
@click.option("--count", default=1, type=int, help="Especifique el número de saludos")
def greet(name, count):
for _ in range(count):
click.echo(f"¡Hola, {name}!")
if __name__ == "__main__":
greet()
Ejemplo de ejecución
python script.py --name Alice --count 3
Salida
¡Hola, Alice!
¡Hola, Alice!
¡Hola, Alice!
5.7 Implementación de subcomandos
Con Click, también es posible crear herramientas CLI con múltiples comandos.
CLI con subcomandos
@click.group()
def cli():
pass
@cli.command()
def hello():
click.echo("¡Hola!")
@cli.command()
def bye():
click.echo("¡Adiós!")
if __name__ == "__main__":
cli()
Ejemplo de ejecución
python script.py hello
Salida
¡Hola!
Al usar @click.group()
de Click, es posible construir aplicaciones CLI con múltiples comandos.
Resumen
Funciones de Click | Método de descripción |
---|---|
Comando básico | @click.command() |
Argumento de opción | @click.option("--name") |
Argumento obligatorio | @click.argument("name") |
Opciones de bandera | @click.option("--verbose", is_flag=True) |
Subcomandos | @click.group() utilizado |
Al usar Click, el desarrollo de herramientas CLI en Python se vuelve más intuitivo que con argparse
. En particular, la facilidad de manejo de funciones de prompt y subcomandos es uno de los grandes atractivos de Click.
6. [Python] Uso de Typer
La biblioteca externa de Python Typer es una biblioteca para la construcción de herramientas CLI basada en Click
, y su característica es que permite una descripción más intuitiva aprovechando las type hints. En esta sección, explicamos en detalle desde el uso básico de Typer hasta sus funciones convenientes.
6.1 ¿Qué es Typer?
Typer es una biblioteca que aprovecha las type hints de Python para crear CLI más concisos y de alta legibilidad. Inherita las potentes funciones de Click mientras permite escribir código type-safe, lo que hace posible un desarrollo de CLI más pythonico.
Características de Typer
- Aprovechando las type hints, es posible definir argumentos de manera intuitiva
- Basado en Click, permite construir potentes herramientas CLI
- Mejora la usabilidad de las funciones de autocompletado del IDE
- Implementa fácilmente valores por defecto y validación con type hints
- Biblioteca proporcionada por los desarrolladores de FastAPI
6.2 Instalación de Typer
Typer es una biblioteca externa, por lo que es necesario instalarla previamente.
pip install typer
6.3 Uso básico de Typer
Al usar Typer, es posible crear herramientas CLI fácilmente aprovechando las type hints. El siguiente código es un script que recibe la --name
opción y muestra un saludo.
Script básico de Typer
import typer
app = typer.Typer()
@app.command()
def greet(name: str = "Invitado"):
print(f"¡Hola, {name}!")
if __name__ == "__main__":
app()
Ejemplo de ejecución
python script.py greet --name Alice
Salida
¡Hola, Alice!
Puntos clave
app = typer.Typer()
: Crea el punto de entrada de la aplicación@app.command()
: Registra la función como un comando CLIname: str = "Invitado"
: Establece un valor por defecto aprovechando type hintsprint()
: Typer utiliza internamenteclick.echo()
, por lo queprint()
también es seguro
6.4 Argumentos obligatorios y argumentos opcionales
En Typer, aprovechando las type hints, es posible definir fácilmente argumentos obligatorios (argumentos posicionales) y argumentos opcionales.
Definición de argumentos obligatorios (argumentos posicionales)
@app.command()
def greet(name: str):
print(f"¡Hola, {name}!")
if __name__ == "__main__":
app()
Ejemplo de ejecución
python script.py greet Alice
Salida
¡Hola, Alice!
Definición de argumentos opcionales
@app.command()
def show_age(age: int = typer.Option(..., help="Especifique la edad")):
print(f"Tu edad es {age} años.")
if __name__ == "__main__":
app()
Ejemplo de ejecución
python script.py show-age --age 25
Salida
Tu edad es 25 años.
Para argumentos opcionales, se utiliza typer.Option(...)
, y al agregar help="descripción"
, se genera automáticamente un mensaje de ayuda.
6.5 Opciones de bandera (True/False)
En Typer, al establecer is_flag=True
, es posible crear opciones de bandera para manejar valores booleanos.
Definición de opciones de bandera
@app.command()
def run(verbose: bool = typer.Option(False, "--verbose", help="Mostrar información detallada")):
if verbose:
print("Ejecutando en modo detallado...")
else:
print("Ejecutando en modo normal.")
if __name__ == "__main__":
app()
Ejemplo de ejecución
python script.py run --verbose
Salida
Ejecutando en modo detallado...
6.6 Aplicación CLI con múltiples opciones
Al usar Typer, es posible crear fácilmente aplicaciones CLI con múltiples opciones.
Ejemplo combinando múltiples opciones
@app.command()
def greet(name: str = "Invitado", count: int = 1):
for _ in range(count):
print(f"¡Hola, {name}!")
if __name__ == "__main__":
app()
Ejemplo de ejecución
python script.py greet --name Alice --count 3
Salida
¡Hola, Alice!
¡Hola, Alice!
¡Hola, Alice!
6.7 Implementación de subcomandos
En Typer, también es posible crear herramientas CLI con múltiples comandos.
CLI con subcomandos
@app.command()
def hello():
print("¡Hola!")
@app.command()
def bye():
print("¡Adiós!")
if __name__ == "__main__":
app()
Ejemplo de ejecución
python script.py hello
Salida
¡Hola!
En Typer, simplemente definiendo múltiples @app.command()
, es posible implementar fácilmente la gestión de múltiples comandos.
Resumen
Funciones de Typer | Método de descripción |
---|---|
Comando básico | @app.command() |
Argumento opcional | typer.Option(...) |
Argumento obligatorio | name: str |
Opción de bandera | typer.Option(False, "--verbose", is_flag=True) |
Subcomandos | Definir múltiples @app.command() |
Al usar Typer, el desarrollo de herramientas CLI en Python se vuelve más intuitivo que con argparse
o Click
. En particular, el hecho de que es posible una descripción aprovechando las type hints es el gran atractivo de Typer.
7. ¿Qué biblioteca debería elegir?
Como métodos para analizar opciones de línea de comandos en Python, introdujimos tres: argparse
、Click
、Typer
.
Cada biblioteca tiene características, y la opción adecuada varía según el proyecto que se utilice.
En esta sección, revisaremos las características de cada biblioteca y explicaremos cuál elegir.
7.1 argparse
・Click
・Typer
Tabla de comparación
Ítem | argparse | Click | Typer |
---|---|---|---|
Biblioteca estándar | ✅ (No requiere instalación adicional) | ❌ (Requiere instalación) | ❌ (Requiere instalación) |
Simplicidad de la descripción | ❌ (Algo verboso) | ✅ (Usa decoradores) | ✅ (Aprovecha las sugerencias de tipo) |
Facilidad de manejo de argumentos de opciones | ◯ (Flexible pero algo complejo) | ✅ (Se puede definir de manera intuitiva) | ✅ (Se puede definir con sugerencias de tipo) |
Generación automática de mensajes de ayuda | ✅ (Soporte estándar) | ✅ (Soporte estándar) | ✅ (Soporte estándar) |
Facilidad de manejo de subcomandos | ❌ (Algo complejo) | ✅ (Se puede definir fácilmente) | ✅ (Se puede definir de manera intuitiva) |
Función de prompt (entrada de usuario) | ❌ (No compatible de forma estándar) | ✅ (Soporte estándar) | ✅ (Soporte estándar) |
Soporte para sugerencias de tipo | ❌ (Ninguno) | ❌ (Ninguno) | ✅ (Disponible) |
Usos adecuados | Scripts pequeños | Herramientas CLI de mediano a gran escala | Herramientas CLI seguras en tipos |
7.2 Bibliotecas recomendadas según el uso
✅ Para scripts pequeños, argparse
- Biblioteca estándar de Python, por lo que no requiere instalación adicional
- Permite crear herramientas CLI simples rápidamente
- Se pueden controlar opciones e argumentos de manera detallada
- Ejemplo: Scripts simples de análisis de logs, herramientas de procesamiento por lotes
✅ Si desea crear herramientas CLI de manera intuitiva, Click
- Aprovecha los decoradores para una descripción intuitiva
- Permite agregar subcomandos y opciones de bandera fácilmente
- La función de prompt (
click.prompt()
) está equipada de forma estándar - Ejemplo: Aplicaciones que funcionan en la terminal, scripts de procesamiento de datos
✅ Si desea escribir código seguro en tipos y de alta legibilidad, Typer
- Aprovecha las sugerencias de tipo para mejorar la función de autocompletado del IDE
- Basado en
Click
, permite construir CLI potentes fácilmente - Alta legibilidad del código, donde la definición de funciones se convierte directamente en la especificación de CLI
- Ejemplo: Herramientas para análisis de datos, CLI de modelos de aprendizaje automático, CLI para desarrollo de API
7.3 Criterios de selección de cada biblioteca
Condición | Biblioteca óptima |
---|---|
Desea completarlo solo con la biblioteca estándar | argparse |
Desea crear CLI con código corto | Click |
Desea aprovechar sugerencias de tipo para mejorar la legibilidad del código | Typer |
Desea crear un script simple | argparse |
Desea aceptar entrada de usuario intuitiva sin GUI | Click o Typer |
Desea desarrollar una aplicación CLI a gran escala | Click o Typer |
7.4 Ejemplos reales de selección de argparse
・Click
・Typer
Escenario de uso | Biblioteca adecuada | Uso específico |
---|---|---|
Agregar argumentos simples a un script | argparse | Scripts de procesamiento de archivos, procesamiento por lotes |
Crear una aplicación CLI simple | Click | Herramientas de gestión de archivos, herramientas de conversión de datos |
Desarrollar CLI seguro en tipos | Typer | Análisis de datos, herramientas de aprendizaje automático |
Desarrollar una herramienta con múltiples subcomandos | Click o Typer | Aplicaciones CLI como Git |
Se necesita prompt (formulario de entrada) | Click | Herramientas que solicitan entrada de usuario |
Desea crear CLI aprovechando sugerencias de tipo | Typer | Herramientas de comandos para API |
7.5 Conclusión: ¿Cuál debería elegir?
Su objetivo | Biblioteca recomendada |
---|---|
Desea completarlo solo con funciones estándar de Python | argparse |
Desea crear CLI de manera intuitiva con código corto | Click |
Desea escribir código de alta legibilidad aprovechando sugerencias de tipo | Typer |
Se necesita entrada de usuario (prompt) | Click |
Desea crear una aplicación CLI con muchos subcomandos | Click o Typer |
Cada biblioteca tiene ventajas y desventajas, y es importante seleccionar la adecuada según el uso.
Resumen
argparse
es una biblioteca estándar de Python y es adecuada para scripts pequeñosClick
aprovecha los decoradores para facilitar la escritura y es adecuada para herramientas CLI a gran escalaTyper
aprovecha las sugerencias de tipo para crear CLI intuitivas y seguras en tipos- Es importante seleccionar la biblioteca adecuada según la escala del proyecto y las funciones requeridas
8. FAQ (Preguntas frecuentes)
Sobre las bibliotecas de opciones de línea de comandos de Python(argparse
、Click
、Typer
)hemos recopilado preguntas frecuentes. Complementa el contenido anterior y explica en detalle los puntos que pueden generar dudas al usarlo.
8.1 argparse
y optparse
¿Cuál es la diferencia?
Q:argparse
y optparse
¿Cuál es la diferencia? ¿Cuál debería usarse?A:
optparse
es una biblioteca que se utilizó en la era de Python 2 y, a partir de Python 3.2, está obsoleta.argparse
es el sucesor deoptparse
y permite un análisis de opciones más flexible.- Actualmente se recomienda usar
argparse
.
Ejemplo:En argparse
, es fácil personalizar valores predeterminados, subcomandos y mensajes de ayuda.
import argparse
parser = argparse.ArgumentParser(description="script de ejemplo")
parser.add_argument("--name", type=str, help="Especifique el nombre")
args = parser.parse_args()
print(f"¡Hola, {args.name}!")
8.2 Click
y Typer
¿Cuál deberías elegir?
Q:Click
o Typer
, ¿cuál debería elegir?A:
Click
es ideal para el desarrollo de herramientas CLI generales y permite crear aplicaciones CLI fácilmente utilizando la sintaxis de decoradores propia deClick
.Typer
se basa enClick
y su fortaleza es poder utilizar hints de tipo. Es adecuado para casos en los que se desea escribir código con seguridad de tipos o aprovechar las funciones de autocompletado del IDE.
Biblioteca | Uso adecuado |
---|---|
Click | Desarrollo de herramientas CLI generales. Casos con muchas opciones o uso de subcomandos |
Typer | Casos en los que se desea utilizar hints de tipo para escribir código de alta legibilidad |
8.3 ¿Debería usar Click
o Typer
incluso en scripts pequeños?
Q:¿Debería usar Click
o Typer
incluso en scripts pequeños? ¿Es argparse
insuficiente?A:
- Para scripts simples,
argparse
es suficiente. Como es una biblioteca estándar, no requiere instalación adicional y se puede implementar fácilmente. - Sin embargo, si las opciones aumentan y se vuelve complejo, considere
Click
oTyper
.
Criterios de selección
Escala del script | Biblioteca óptima |
---|---|
Script simple (1-3 opciones) | argparse |
Script de mediana escala (5 o más opciones) | Click |
Desea crear un script con seguridad de tipos | Typer |
8.4 ¿Cómo crear subcomandos con argparse
?
Q:¿Cómo crear subcomandos como git
usando argparse
?A:En argparse
, puedes crear subcomandos utilizando subparsers
.
Ejemplo: Creación de una herramienta CLI similar a git
import argparse
parser = argparse.ArgumentParser(description="Ejemplo de subcomandos")
subparsers = parser.add_subparsers(dest="command")
# Comando hello
hello_parser = subparsers.add_parser("hello", help="Saludar")
hello_parser.add_argument("name", type=str, help="Especifique el nombre")
# Ejecución
args = parser.parse_args()
if args.command == "hello":
print(f"¡Hola, {args.name}!")
Ejemplo de ejecución
python script.py hello Alice
Salida
¡Hola, Alice!
Si se utilizan muchos subcomandos, Click
es más intuitivo, así que elige según la situación.
8.5 ¿Cuáles son los beneficios de usar Typer
?
Q:¿Cuál es el mayor beneficio de usar Typer
?A:El mayor beneficio de Typer
es poder aprovechar los hints de tipo.
- En
argparse
yClick
es necesario especificar explícitamente el tipo de opción, peroTyper
puede usar directamente los hints de tipo de Python, lo que simplifica el código. - Se refuerza la función de autocompletado del IDE, mejorando la eficiencia de desarrollo.
Ejemplo:Explotación de hints de tipo con Typer
import typer
app = typer.Typer()
@app.command()
def greet(name: str):
print(f"¡Hola, {name}!")
if __name__ == "__main__":
app()
En este código, al especificar la pista de tipo name: str
, la opción CLI se verifica automáticamente.
Resumen
argparse
es una biblioteca estándar adecuada para scripts CLI simples.Click
utiliza decoradores para facilitar la escritura y es adecuada para herramientas CLI a gran escala.Typer
utiliza hints de tipo para un desarrollo CLI de alta legibilidad.
¡Seleccione la biblioteca adecuada y desarrolle herramientas CLI más eficientes!