python3 - Python argparse-Agregar argumento a mĂșltiples subparsers
metavar python (3)
Esto se puede lograr definiendo un analizador principal que contenga las opciones comunes:
[...]
parent_parser = argparse.ArgumentParser(add_help=False)
parent_parser.add_argument("-p", type=int, required=True,
help="set db parameter")
parser_create = subparsers.add_parser("create", parents=[parent_parser],
help="create the orbix environment")
parser_update = subparsers.add_parser("update", parents=[parent_parser],
help="update the orbix environment")
Mi script define un analizador principal y varios subparsers. Quiero aplicar el argumento -p
a algunos subparsers. Hasta ahora el código se ve así:
parser = argparse.ArgumentParser(prog="myProg")
subparsers = parser.add_subparsers(title="actions")
parser.add_argument("-v", "--verbose",
action="store_true",
dest="VERBOSE",
help="run in verbose mode")
parser_create = subparsers.add_parser ("create",
help = "create the orbix environment")
parser_create.add_argument ("-p",
type = int,
required = True,
help = "set db parameter")
# Update
parser_update = subparsers.add_parser ("update",
help = "update the orbix environment")
parser_update.add_argument ("-p",
type = int,
required = True,
help = "set db parameter")
Como puede ver, el add_arument ("-p")
se repite dos veces. De hecho, tengo muchos más subparsers. ¿Hay alguna manera de recorrer los subparsers existentes para evitar la repetición?
Para el registro, estoy usando Python 2.7
Puede recorrer sus subparsers de la siguiente manera.
for name, subp in subparsers.choices.items():
print(subp)
subp.add_argument(dest=''g'', help=''Inpput for g variable'', default=''7'')
También puede recorrer los subparsers y agregar la misma opción a todos ellos.
parser = argparse.ArgumentParser(prog="myProg")
subparsers = parser.add_subparsers(title="actions")
parser.add_argument("-v", "--verbose",
action="store_true",
dest="VERBOSE",
help="run in verbose mode")
parser_create = subparsers.add_parser ("create",
help = "create the orbix environment")
parser_update = subparsers.add_parser ("update",
help = "update the orbix environment")
for subparser in [parser_create, parser_update]:
subparser.add_argument ("-p",
type = int,
required = True,
help = "set db parameter")