如果我的代码调用的函数返回一个ArgumentParser
已经定义了一些子解析器的函数,我该如何添加更多的子解析器?
我想做这样的事情:
parser_with_subparsers = build_parser()
additional_subparsers = parser_with_subparsers.add_subparsers()
extra_subparser = additional_subparsers.add_parser("extra", help="extra help"))
但是当我在解释器中尝试这样做时:
>>> parser_with_subparsers = build_parser()
>>> additional_subparsers = parser_with_subparsers.add_subparsers()
usage: [-h] {original_subparser} ...
: error: cannot have multiple subparser arguments
请注意,我无权访问该build_parser()
函数的内部。
我能想到的唯一解决方案是使用parents
,但这具有以一种奇怪的方式对子解析器进行分组的副作用:
>>> child_parser = argparse.ArgumentParser(parents=[build_parser()])
>>> additional_subparsers = child_parser.add_subparsers()
>>> extra_subparser = additional_subparsers.add_parser("extra", help="extra help")
>>> extra_subparser2 = additional_subparsers.add_parser("extra2", help="extra2 help")
>>> child_parser.print_help()
usage: [-h] {original_subparser} ... {extra,extra2} ...
positional arguments:
{original_subparser}
original_subparser original_subparser help
{extra,extra2}
extra extra help
extra2 extra2 help
optional arguments:
-h, --help show this help message and exit
我想这样做的原因是我想向Argument Parser
我继承的一个添加额外的“命令”。