La argparse
documentación es razonablemente buena, pero deja de lado algunos detalles útiles que podrían no ser obvios. (@Diego Navarro ya mencionó algo de esto, pero trataré de ampliar un poco su respuesta). El uso básico es el siguiente:
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--my-foo', default='foobar')
parser.add_argument('-b', '--bar-value', default=3.14)
args = parser.parse_args()
El objeto del que regresa parse_args()
es un objeto 'Espacio de nombres': un objeto cuyas variables miembro se nombran después de sus argumentos de línea de comandos. El Namespace
objeto es cómo accede a sus argumentos y los valores asociados con ellos:
args = parser.parse_args()
print args.my_foo
print args.bar_value
(Tenga en cuenta que argparse
reemplaza '-' en los nombres de sus argumentos con guiones bajos al nombrar las variables).
En muchas situaciones, es posible que desee utilizar argumentos simplemente como indicadores que no tienen ningún valor. Puede agregarlos en argparse de esta manera:
parser.add_argument('--foo', action='store_true')
parser.add_argument('--no-foo', action='store_false')
Lo anterior creará variables llamadas 'foo' con valor True y 'no_foo' con valor False, respectivamente:
if (args.foo):
print "foo is true"
if (args.no_foo is False):
print "nofoo is false"
Tenga en cuenta también que puede usar la opción "requerida" al agregar un argumento:
parser.add_argument('-o', '--output', required=True)
De esa manera, si omite este argumento en la línea de comando, argparse
le dirá que falta y detendrá la ejecución de su script.
Finalmente, tenga en cuenta que es posible crear una estructura dict de sus argumentos utilizando la vars
función, si eso le facilita la vida.
args = parser.parse_args()
argsdict = vars(args)
print argsdict['my_foo']
print argsdict['bar_value']
Como puede ver, vars
devuelve un dict con sus nombres de argumentos como claves y sus valores como, er, valores.
Hay muchas otras opciones y cosas que puede hacer, pero esto debería cubrir los escenarios de uso más esenciales y comunes.
sys.argv
el argumento que desea ...