我有多个subparser,我想使用use parser.error
来显示错误。
main_parser = argparse.ArgumentParser()
subparsers = main_parser.add_subparsers(dest = 'subparser_name')
password_subparser = subparsers.add_parser('password')
password_subparser.add_argument('--username',
default = None, required = False,
dest = "username", help='Target username')
web_subparser = subparsers.add_parser('web')
web_subparser.add_argument('--port',
default = 8765, required = False, type = int,
dest = "port", help='Listening port')
args = main_parser.parse_args()
通常我可以使用main_parser.error
,但为了更准确地说明错误,我应该使用当前的subparser,例如password_subparser
现在我知道当前subparser的名称,又名args.subparser_name
但我无法找到password_subparser
main_parser
的任何想法?
没有像main_parser.get_subparser(subparser_name)
答案 0 :(得分:2)
虽然没有在任何地方记录,但似乎您可以通过subparsers.choices
字典访问子分析符:
>>> subparsers.choices['password']
ArgumentParser(prog='untitled.py password', usage=None, description=None, formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)