Python 如何从ArgumentParser获取参数列表
有没有办法从ArgumentParser对象获取不同的参数Python 如何从ArgumentParser获取参数列表,python,argparse,Python,Argparse,有没有办法从ArgumentParser对象获取不同的参数 让我们假设我有以下ArgumentParser: parser=argparse.ArgumentParser(add\u help=False,allow\u abbrev=True) parser.add_参数(“--help”,action=“store_true”,help=“提供有关用法的帮助”) parser.add_参数(“-u”,“--user”,help=“用户,可以是他们的标记或用户ID”) parser.add_参
让我们假设我有以下ArgumentParser:
parser=argparse.ArgumentParser(add\u help=False,allow\u abbrev=True)
parser.add_参数(“--help”,action=“store_true”,help=“提供有关用法的帮助”)
parser.add_参数(“-u”,“--user”,help=“用户,可以是他们的标记或用户ID”)
parser.add_参数(“-hi”,“-upper”,type=int,default=100,help=“要包含的最高统计值,这是包含的。应该是整数类型。”)
parser.add_参数(“-lo”,“-lower”,type=int,default=0,help=“要包含的最低状态,这是包含的。应该是整数类型。”)
# ...
理想情况下,我想要这样的列表:
[
{"name": "help", "help":"Provides help on usage."},
{"name": "user", "help":"A User, could be their tag or User ID."},
{"name": "upper", "help":"The highest stat to include, this is inclusive. Should be an integer type."},
{"name": "lower", "help":"The lowest stat to include, this is inclusive. Should be an integer type."}
# ...
]
# or even better
[
Argument,
Argument,
Argument,
Argument
# where you can use Argument.help or Argument.name
]
我能看到的最好的方法是使用parser.format\u help()
,以获得用法输出,然后
将其拆分并解析为正确的格式,但必须有不同的方法
如何获取ArgumentParser的参数?
解析器。_actions
是Action
子类的实例列表。每个操作都有一个选项\u strings
属性,该属性是匹配字符串的列表。您需要提取最长的选项字符串,因为您不希望每个短选项都有单独的结果(例如-u和--user)
然后,操作列表是带有名称和帮助键的DICT列表。
解析器。_actions
是操作的子类的实例列表。每个操作都有一个选项\u strings
属性,该属性是匹配字符串的列表。您需要提取最长的选项字符串,因为您不希望每个短选项都有单独的结果(例如-u和--user)
操作列表是一个包含名称和帮助键的dict列表。您是否尝试过查看解析器。我还没有尝试过,没有。解析器。似乎有一个参数列表,我可以使用解析器获取信息。
dict.[“\u操作”][idx]。dest
或其他,那正是我想要的。非常感谢。你试过看语法分析器吗?我还没有试过,没有。语法分析器。语法分析器似乎有一个参数列表,我可以使用语法分析器获取信息。语法分析器。语法分析器[“\u动作”][idx]。dest
或其他,这正是我要找的。非常感谢。解析器中的每个操作
。\u actions
列表具有dest
和help
属性。dest
不是最长的选项字符串,而是第一个“long”,请参见argparse.\u Actions\u container.\u get\u optional\u kwargs
中的代码。因此,您的代码是一个有点错误的副本:)。在解析器中的每个操作
。\u actions
列表都有一个dest
和help
属性。dest
不是最长的选项字符串,而是第一个“long”,请参见argparse.\u Actions\u container.\u get\u optional\u kwargs
中的代码。因此,您的代码是一个有点错误的副本:)。
actions = []
for action in parser._actions:
longest = ''
for option in action.option_strings:
option = option.lstrip('-')
if len(option) > len(longest):
longest = option
actions.append({'name': longest, 'help': action.help})