Saltar al contenido

Tutorial de Argparse – PythonForBeginners.com

¿Qué es?

Analizador de opciones de línea de comandos, argumentos y subcomandos

¿Por qué usarlo?

El módulo argparse facilita la escritura de interfaces de línea de comandos fáciles de usar.

¿Como hace eso?

El programa define qué argumentos requiere, y argparse descubrirá cómo analizarlos de sys.argv. El módulo argparse también genera automáticamente mensajes de ayuda y uso y emite errores cuando los usuarios dan al programa argumentos no válidos.

Concepto

Cuando ejecuta el comando “ls” sin ninguna opción, mostrará por defecto el contenido del directorio actual. Si ejecuta “ls” en un directorio diferente en el que se encuentra actualmente, debe escribir “ls nombre_directorio”.

El “nombre_directorio” es un “argumento posicional”, lo que significa que el programa sabe qué hacer con el valor.

Para obtener más información sobre un archivo, podemos usar el modificador “-l”.

La “-l” se conoce como un “argumento opcional”. Si desea mostrar el texto de ayuda del comando ls, debe escribir “ls –help”

Argparse

Para comenzar a usar el módulo argparse, primero tenemos que importarlo.

import argparse
parser = argparse.ArgumentParser()
parser.parse_args()

Ejecuta el código

Ejecute el código con la opción –help (ejecutar el script sin ninguna opción da como resultado que no se muestre nada en stdout)

python program.py --help (or python program.py -h) 
usage: program.py [-h]

optional arguments:
  -h, --help  show this help message and exit

Como se vio anteriormente, aunque no especificamos ningún argumento de ayuda en nuestro script, todavía nos da un buen mensaje de ayuda. Esta es la única opción que tenemos de forma gratuita.

Argumentos posicionales

En nuestro ejemplo “ls” anterior, usamos los argumentos posicionales “ls nombre_directorio”. Siempre que queramos especificar qué opciones de línea de comandos aceptará el programa, usamos el método “add_argument ()”.

parser.add_argument("echo") 	# naming it "echo"
args = parser.parse_args()	# returns data from the options specified (echo)
print(args.echo)				

Si ahora ejecutamos el código, podemos ver que requiere que especifiquemos una opción

$ python program.py

usage: program.py [-h] echo
program.py: error: too few arguments

Cuando especifiquemos la opción de eco, mostrará “eco”

$ python program.py echo
echo

#Using the --help option
$ python program.py --help
usage: program.py [-h] echo

positional arguments:
  echo

optional arguments:
  -h, --help  show this help message and exit

Ampliación del texto de ayuda

Para obtener más ayuda sobre nuestro argumento posicional (echo), tenemos que cambiar nuestro script.

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here")
args = parser.parse_args()
print(args.echo)

Resultado en esto:

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

$ python program.py --help
usage: program.py [-h] echo

positional arguments:
  echo        echo the string you use here

optional arguments:
  -h, --help  show this help message and exit

Nota: Argparse trata las opciones que damos como una cadena, pero podemos cambiar eso.

Ejecutando el código con el tipo establecido en Integer

Este código tratará la entrada como un número entero.

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",
                    type=int)
args = parser.parse_args()
print(args.square**2)

Si ejecutamos el programa con la opción –help, podemos ver:

$ python program.py -h
usage: program.py [-h] square

positional arguments:
  square      display a square of a given number

optional arguments:
  -h, --help  show this help message and exit

Ejecuta el programa

En el texto de ayuda, podemos ver que si le damos un número al programa, nos devolverá el cuadrado.

Genial, probémoslo:

$ python program.py 4
16

$ python program.py 10
100

Si usamos una cadena en lugar de un número, el programa devolverá un error

$ python program.py four

usage: program.py [-h] square

program.py: error: argument square: invalid int value: 'four'

Argumentos opcionales

En nuestro ejemplo “ls” anterior, usamos el argumento opcional “-l” para obtener más información sobre un archivo. El programa siguiente mostrará algo cuando se especifique –verbosity y no mostrará nada cuando no.

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--verbose", help="increase output verbosity",
                    action="store_true")
args = parser.parse_args()
if args.verbose:
    print("verbosity turned on")

Un argumento opcional (u opción) se da (por defecto) Ninguno como valor cuando no se está utilizando. Usando la opción –verbosity, solo dos valores son realmente útiles, Verdadero o Falso.

La palabra clave “acción” recibe el valor “store_true”, lo que significa que si se especifica la opción, entonces asigne el valor “True” a args.verbose. No especificar la opción implica False.

Si ejecutamos el programa con la opción –help, podemos ver:

$ python program.py -h
usage: program.py [-h] [--verbose]

optional arguments:
  -h, --help  show this help message and exit
  --verbose   increase output verbosity

Ejecute el programa con la opción –verbose

$ python program.py --verbose
verbosity turned on

Opciones cortas

Usar versiones cortas de las opciones es tan fácil como:

parser.add_argument("-v", "--verbose", help="increase output verbosity",
                    action="store_true")

El texto de ayuda se actualizará con la versión corta.

Fuente

http://docs.python.org/dev/library/argparse.html

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.