如何从ArgumentParser对象中获取可用的标志?

时间:2013-02-16 18:51:47

标签: python command-line-arguments argparse

我正在为这个python项目使用argparse模块。我想在调用ArgumentParser之前从parse_args()对象中获取可用的标志。有人有什么想法吗?

2 个答案:

答案 0 :(得分:3)

从add_argument()的源代码中得到这个:

>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-v', '--verbosity', help='more debug info', action='store_true')
_StoreTrueAction(option_strings=['-v', '--verbosity'], dest='verbosity', nargs=0, const=True, default=False, type=None, choices=None, help='more debug info', metavar=None)
>>> parser._option_string_actions.keys()
['-v', '-h', '--verbosity', '--help']
>>> 

答案 1 :(得分:1)

前几天我试图解决这个问题,除了@vvoody所做的以下事情之外,我从来没有得到过满意的答案。

In [117]: map(lambda x : x.dest,parser._actions)
Out[117]: ['help', 'verbosity']

如果您为-v --verbosity更改dest,则可以删除所有别名--verbosity == dest='loud' {1}}然后它返回loud,这可能是也可能不是问题。

似乎argsparse显而易见的是开箱即​​用。