Parámetro de línea de comando opcional en Python
-
26-10-2019 - |
Pregunta
Estoy tratando de recuperar parámetros de línea de comandos opcionales para un script de Python (2.7 en Windows) y las cosas no van sin problemas. El código es:
parser = argparse.ArgumentParser(description = 'Process display arguments')
parser.add_argument('-t', nargs = '?', default = 'baz')
args = parser.parse_args(['-t'])
print args.t
Si corro "program.py
"Sin parámetro, Args.t se imprime como ninguno. Si ejecuto"program.py -t
", Args.t se imprime como ninguno. Si ejecuto"program.py -t foo
", Args.T está impreso como ninguno.
¿Por qué no obtengo el valor de la línea de comando en args.t?
Solución
No pases ['-t']
para parse_args. Solo haz:
args = parser.parse_args()
Cualquier argumento que pase a parse_args se use en lugar de su línea de comandos. Entonces, con ese argumento, no importa qué línea de comandos uses, Argparse nunca lo ve.
Otros consejos
La línea
args = parser.parse_args(["-t"])
está pasando los argumentos de la línea de comando ["-t"] al analizador. Desea trabajar con los argumentos de línea de comando reales, así que cambie la línea a
args = parser.parse_args()
Utilizar el argumento de palabras clave constante:
import argparse
parser = argparse.ArgumentParser(description = 'Process display arguments')
parser.add_argument('-t', nargs = '?', const = 'baz', default = 'baz')
args = parser.parse_args()
print args.t
Ejecutarlo rendimiento:
% test.py # handled by `default`
baz
% test.py -t # handled by `const`
baz
% test.py -t blah
blah