parser example argumentparser arg_parser add_argument python argparse

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'')