"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Dominar el argparse de Python: una guía completa para principiantes

Dominar el argparse de Python: una guía completa para principiantes

Publicado el 2024-09-16
Navegar:224

Mastering Python’s argparse: A Comprehensive Guide for Beginners

Introducción

El módulo argparse de Python es una poderosa herramienta para crear interfaces de línea de comandos fáciles de usar. Ya sea que esté desarrollando scripts simples o aplicaciones complejas, saber cómo usar argparse de manera efectiva puede mejorar significativamente la usabilidad de sus programas. En esta publicación, lo guiaré a través de todo lo que necesita saber para dominar argparse, desde el análisis de argumentos básico hasta funciones avanzadas y mejores prácticas.


¿Qué es argparse?

El módulo argparse proporciona una forma sencilla de manejar los argumentos de la línea de comandos pasados ​​a su secuencia de comandos Python. Genera automáticamente mensajes de ayuda, maneja la verificación de tipos y puede procesar argumentos tanto opcionales como posicionales.

¿Por qué utilizar argparse?

  • Mensajes de ayuda automáticos: Los usuarios pueden entender fácilmente cómo ejecutar su programa usando la opción --help.
  • Verificación de tipos: puede asegurarse de que las entradas sean válidas (por ejemplo, números enteros donde los espera).
  • Interfaces de línea de comandos legibles: Hace que tus scripts sean más profesionales y fáciles de usar.

¡Empecemos con lo básico!


Configurando argparse

Para comenzar a usar argparse, primero deberá importar el módulo y crear un objeto ArgumentParser:

import argparse

parser = argparse.ArgumentParser(description="Demo script for argparse.")

El argumento de descripción aquí es opcional y ayuda a explicar el propósito de su script. Aparece cuando los usuarios ejecutan el comando --help.

Argumentos posicionales

Los argumentos posicionales son el tipo de argumento más básico en argparse. Estos son obligatorios y deben aparecer en el comando en el orden correcto.

parser.add_argument("name", help="Your name")
args = parser.parse_args()
print(f"Hello, {args.name}!")

Ejecutando el script:

$ python script.py Alice
Hello, Alice!

Si no proporciona el argumento de nombre, argparse arrojará un error:

$ python script.py
usage: script.py [-h] name
script.py: error: the following arguments are required: name

Argumentos opcionales

Los argumentos opcionales, como sugiere el nombre, no son obligatorios. Por lo general, comienzan con uno o dos guiones (- o --) para distinguirlos de los argumentos posicionales.

parser.add_argument("-g", "--greeting", help="Custom greeting message", default="Hello")
args = parser.parse_args()
print(f"{args.greeting}, {args.name}!")

Ejecutando el script:

$ python script.py Alice --greeting Hi
Hi, Alice!

El argumento predeterminado garantiza que se utilice un valor predeterminado si el usuario no proporciona la opción:

$ python script.py Alice
Hello, Alice!

Tipos de argumentos

De forma predeterminada, todos los argumentos se tratan como cadenas. Pero puedes especificar el tipo de argumento que esperas. Por ejemplo, si necesita un número entero:

parser.add_argument("age", type=int, help="Your age")
args = parser.parse_args()
print(f"{args.name} is {args.age} years old.")

Ejecutando el script:

$ python script.py Alice 25
Alice is 25 years old.

Si proporciona un tipo no válido (por ejemplo, una cadena donde se espera un número entero), argparse mostrará automáticamente un error:

$ python script.py Alice twenty-five
usage: script.py [-h] name age
script.py: error: argument age: invalid int value: 'twenty-five'

Argumentos de marca (opciones booleanas)

Los argumentos de bandera son útiles para habilitar o deshabilitar ciertas funciones. Estos no toman un valor sino que actúan como interruptores. Utilice la opción action="store_true" para crear una bandera.

parser.add_argument("-v", "--verbose", action="store_true", help="Enable verbose mode")
args = parser.parse_args()

if args.verbose:
    print("Verbose mode is on.")

Ejecutando el script:

$ python script.py Alice -v
Verbose mode is on.

Si no proporciona la marca, se utiliza el valor predeterminado de Falso:

$ python script.py Alice

Nombres de opciones cortos y largos

argparse le permite definir nombres de opciones tanto cortos como largos para el mismo argumento. Por ejemplo:

parser.add_argument("-g", "--greeting", help="Custom greeting message")

Puedes usar la versión corta (-g) o la versión larga (--greeting):

$ python script.py Alice -g Hi
Hi, Alice!
$ python script.py Alice --greeting Hi
Hi, Alice!

Valores predeterminados

En algunos casos, es posible que desee definir valores predeterminados para sus argumentos opcionales. Esto garantiza que su programa se comporte correctamente incluso cuando falta un argumento.

parser.add_argument("-g", "--greeting", default="Hello", help="Greeting message")
args = parser.parse_args()
print(f"{args.greeting}, {args.name}!")

Manejo de múltiples valores

También puede especificar argumentos que acepten múltiples valores usando nargs. Por ejemplo, para aceptar varios nombres de archivos:

parser.add_argument("files", nargs=" ", help="List of file names")
args = parser.parse_args()
print(f"Files to process: {args.files}")

Ejecutando el script:

$ python script.py file1.txt file2.txt file3.txt
Files to process: ['file1.txt', 'file2.txt', 'file3.txt']

Limitar opciones

Puedes restringir los valores posibles de un argumento usando la opción de opciones:

parser.add_argument("--format", choices=["json", "xml"], help="Output format")
args = parser.parse_args()
print(f"Output format: {args.format}")

Ejecutando el script:

$ python script.py Alice --format json
Output format: json

Si el usuario proporciona una opción no válida, argparse arrojará un error:

$ python script.py Alice --format csv
usage: script.py [-h] [--format {json,xml}] name
script.py: error: argument --format: invalid choice: 'csv' (choose from 'json', 'xml')

Combinación de argumentos posicionales y opcionales

Puedes mezclar y combinar argumentos posicionales y opcionales en el mismo script.

parser.add_argument("name", help="Your name")
parser.add_argument("--greeting", help="Custom greeting", default="Hello")
parser.add_argument("--verbose", action="store_true", help="Enable verbose output")

args = parser.parse_args()

if args.verbose:
    print(f"Running in verbose mode...")

print(f"{args.greeting}, {args.name}!")

Generando mensajes de ayuda

Una de las mayores fortalezas de argparse es su generador de mensajes de ayuda integrado. Cuando un usuario ejecuta su script con el indicador -h o --help, argparse mostrará automáticamente los argumentos y sus descripciones.

$ python script.py -h
usage: script.py [-h] [--greeting GREETING] [--verbose] name

Demo script for argparse.

positional arguments:
  name             Your name

optional arguments:
  -h, --help       show this help message and exit
  --greeting GREETING
                   Custom greeting
  --verbose        Enable verbose output

Subanalizadores: Manejo de múltiples comandos

Si su secuencia de comandos tiene varios subcomandos (por ejemplo, git commit, git push), puede usar subanalizadores para manejarlos.

parser = argparse.ArgumentParser(description="Git-like command-line tool")
subparsers = parser.add_subparsers(dest="command")

# Add "commit" subcommand
commit_parser = subparsers.add_parser("commit", help="Record changes to the repository")
commit_parser.add_argument("-m", "--message", help="Commit message", required=True)

# Add "push" subcommand
push_parser = subparsers.add_parser("push", help="Update remote refs")

args = parser.parse_args()

if args.command == "commit":
    print(f"Committing changes with message: {args.message}")
elif args.command == "push":
    print("Pushing changes to remote repository.")

Mejores prácticas

Estas son algunas de las mejores prácticas a considerar al usar argparse:

  1. Proporcione siempre un mensaje de ayuda: use el argumento de ayuda en add_argument para describir lo que hace cada opción.
  2. Utilice valores predeterminados sensatos: proporcione valores predeterminados cuando corresponda para garantizar una ejecución fluida sin requerir todos los argumentos.
  3. Validar entradas: utilice opciones y tipos para garantizar que los usuarios proporcionen entradas válidas.
  4. Mantenlo simple: intenta no sobrecargar tu script con demasiados argumentos a menos que sea absolutamente necesario.
  5. Estructura tus comandos: para herramientas complejas, utiliza subanalizadores para separar diferentes comandos de forma lógica.

Conclusión

El módulo argparse es esencial para escribir scripts Python profesionales y fáciles de usar. Al aprovechar sus funciones como argumentos posicionales y opcionales, verificación de tipos y subanalizadores, puede crear interfaces de línea de comandos intuitivas y potentes.

La próxima vez que crees un script de Python, considera usar argparse para hacerlo más flexible y accesible. ¡Feliz codificación!


No dudes en comunicarte conmigo si tienes preguntas o sugerencias. Conéctate conmigo en:

  • LinkedIn
  • GitHub
Declaración de liberación Este artículo se reproduce en: https://dev.to/usooldatascience/mastering-pythons-argparse-a-comprehensive-guide-for-beginners-48fn?1 Si hay alguna infracción, comuníquese con [email protected] para eliminar él
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3