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?

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top