rahmu rahmu - 26 days ago 8
Python Question

Python argparse - Add argument to multiple subparsers

My script defines one main parser and multiple subparsers. I want to apply the

-p
argument to some subparsers. So far the code looks like this:

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


As you can see the
add_arument ("-p")
is repeated twice. I actually have a lot more subparsers. Is there a way to loop through the existing subparsers in order to avoid repetition?

For the record, I am using Python 2.7

Answer

This can be achieved by defining a parent parser containing the common option(s):

[...]
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")
Comments