Python 如何从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对象获取不同的参数
让我们假设我有以下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})