Python 按名称获取次帕瑟
我有多个子parser,我想使用Python 按名称获取次帕瑟,python,argparse,Python,Argparse,我有多个子parser,我想使用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',
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\u parser.error
,但为了使错误更精确,我应该使用当前子parser,例如password\u子parser
现在我知道了当前子parser的名称,也就是args.subparser\u name
但是我无法从主解析器
找到密码子解析器
,有什么想法吗
没有像,
main\u parser.get\u subparser(subparser\u name)
这样的方法,虽然没有任何文档记录,但您似乎可以通过subparser访问子parser。选项
字典:
>>> subparsers.choices['password']
ArgumentParser(prog='untitled.py password', usage=None, description=None, formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)
>subparsers.choices['password']
ArgumentParser(prog='untitled.py password',usage=None,description=None,formatter\u class=,conflict\u handler='error',add\u help=True)
虽然没有任何文档记录,但您似乎可以通过子Parser访问子Parser。选项
字典:
>>> subparsers.choices['password']
ArgumentParser(prog='untitled.py password', usage=None, description=None, formatter_class=<class 'argparse.HelpFormatter'>, conflict_handler='error', add_help=True)
>subparsers.choices['password']
ArgumentParser(prog='untitled.py password',usage=None,description=None,formatter\u class=,conflict\u handler='error',add\u help=True)
您需要这样做吗?您得到的引用如下所示:password\u subparser=main\u parser.add\u subparser(dest='subparser\u name')
并正常使用它。@cᴏʟᴅsᴘᴇᴇᴅ 我有10个子parser,我可以识别哪个子parser正在使用,但只有名称您在哪里定义password\u subparser
?@daisy:如果您想获取对象本身,请将其存储在需要的位置?您得到的引用如下所示:password\u subparser=main\u parser.add\u subparser(dest='subparser\u name')
并正常使用它。@cᴏʟᴅsᴘᴇᴇᴅ 我有10个子parser,我可以识别哪个子parser正在使用,但是只有名称你在哪里定义password\u subparser
?@daisy:如果你想获取对象本身,将其存储在某个地方,如果你不喜欢使用未记录的特性,你可以在创建解析器时轻松地构建等效的字典mydict['password']=password\u subparser
等。最好编写一个实用函数来为您实现这一点。如果您不喜欢使用未记录的功能,您可以在创建解析器时轻松构建等效的字典mydict['password']=password\u subparser
,等等。最好编写一个实用函数来为您实现这一点。