Python, acepta argumentos desde la línea de comandos

Python ofrece varias formas de manejar los argumentos pasados cuando invocamos el programa desde la línea de comandos.

Hasta ahora ha ejecutado programas desde un REPL o usando

python <filename>.py

Puede pasar argumentos y opciones adicionales cuando lo haga, así:

python <filename>.py <argument1>
python <filename>.py <argument1> <argument2>

Una forma básica de manejar esos argumentos es usar elsysmódulo de la biblioteca estándar.

Puede obtener los argumentos pasados en elsys.argvlista:

import sys
print(len(sys.argv))
print(sys.argv)

lossys.argvLa lista contiene como primer elemento el nombre del archivo que se ejecutó, p. ej.['main.py'].

Es una forma sencilla, pero hay que trabajar mucho. Debe validar los argumentos, asegurarse de que su tipo sea correcto, debe imprimir comentarios al usuario si no está usando el programa correctamente.

Python proporciona otro paquete en la biblioteca estándar para ayudarlo a:argparse.

Primero importasargparsey tu llamasargparse.ArgumentParser(), pasando la descripción de su programa:

import argparse

parser = argparse.ArgumentParser( description=‘This program prints the name of my dogs’ )

Luego procede a agregar los argumentos que desea aceptar. Por ejemplo, en este programa aceptamos un-copción para pasar un color, así:python program.py -c red

import argparse

parser = argparse.ArgumentParser( description=‘This program prints a color HEX value’ )

parser.add_argument(’-c’, ‘–color’, metavar=‘color’, required=True, help=‘the color to search for’)

args = parser.parse_args()

print(args.color) # ‘red’

Si no se especifica el argumento, el programa genera un error:

➜  python python program.py
usage: program.py [-h] -c color
program.py: error: the following arguments are required: -c

You can set an option to have a specific set of values, using choices:

parser.add_argument('-c', '--color', metavar='color', required=True, choices={'red','yellow'}, help='the color to search for')
➜  python python program.py -c blue
usage: program.py [-h] -c color
program.py: error: argument -c/--color: invalid choice: 'blue' (choose from 'yellow', 'red')

There are more options, but those are the basics.

And there are community packages that provide this functionality, too, like Click and Python Prompt Toolkit.


More python tutorials: