按名称获取subparser

时间:2017-07-10 08:15:48

标签: python argparse

我有多个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)

这样的方法

1 个答案:

答案 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)