Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按名称获取次帕瑟_Python_Argparse - Fatal编程技术网

Python 按名称获取次帕瑟

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,我想使用
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
,等等。最好编写一个实用函数来为您实现这一点。