example - python argparse argumentparser()
argparse module ¿Cómo agregar la opción sin ningún argumento? (2)
He creado un script usando argparse
.
La secuencia de comandos debe tomar un nombre de archivo de configuración como una opción, y el usuario puede especificar si es necesario que procedan totalmente la secuencia de comandos o que solo la simulen.
Los argumentos que se pasarán: ./script -f config_file -s
o ./script -f config_file
.
Está bien para la parte -f archivo_configuración, pero me sigue pidiendo argumentos para el -s que es opcional y no debe ser seguido por ninguno.
He intentado esto:
parser = argparse.ArgumentParser()
parser.add_argument(''-f'', ''--file'')
#parser.add_argument(''-s'', ''--simulate'', nargs = ''0'')
args = parser.parse_args()
if args.file:
config_file = args.file
if args.set_in_prod:
simulate = True
else:
pass
Con los siguientes errores:
File "/usr/local/lib/python2.6/dist-packages/argparse.py", line 2169, in _get_nargs_pattern
nargs_pattern = ''(-*%s-*)'' % ''-*''.join(''A'' * nargs)
TypeError: can''t multiply sequence by non-int of type ''str''
Y el mismo error con ''''
lugar de 0
.
Como @Felix Kling sugirió use action=''store_true''
:
>>> from argparse import ArgumentParser
>>> p = ArgumentParser()
>>> _ = p.add_argument(''-f'', ''--foo'', action=''store_true'')
>>> args = p.parse_args()
>>> args.foo
False
>>> args = p.parse_args([''-f''])
>>> args.foo
True
Para crear una opción que no necesita ningún valor, establezca la action
[docs] de ''store_const''
, ''store_true''
o ''store_false''
.
Ejemplo:
parser.add_argument(''-s'', ''--simulate'', action=''store_true'')