Me gustaría tener un argumento para mi programa que tenga algunos parámetros requeridos junto con algunos parámetros opcionales. Algo como esto:Python argparse subargumentos opcionales
[--print text [color [size]]
por lo que podría pasar alguna de estas:
mycommand --print hello
mycommand --print hello blue
mycommand --print hello red 12
Podría ser múltiplo de éstos así que tiene que ser una sola add_argument. Por ejemplo:
[--print text [color]] [--output filename [overwrite]]
puedo lograr argumentos que están cerca de lo que quiero:
>>> parser = argparse.ArgumentParser()
>>> act = parser.add_argument('--foo', nargs=3, metavar=('x','y','z'))
>>> act = parser.add_argument('--bar', nargs='?')
>>> act = parser.add_argument('--baz', nargs='*')
>>> parser.print_help()
usage: [-h] [--foo x y z] [--bar [BAR]] [--baz [BAZ [BAZ ...]]]
optional arguments:
-h, --help show this help message and exit
--foo x y z
--bar [BAR]
--baz [BAZ [BAZ ...]]
pero no del todo. ¿Hay alguna manera de hacer esto con argparse? Sé que podría hacerlos todos nargs="*"
pero luego --help no enumeraría los nombres de los argumentos opcionales. Si paso nargs="*"
y una tupla para metavar, argparse lanza una excepción.
Gracias. Eso es muy malo. – jterrace