如何获得optparse列出所有可能的参数和选项?

时间:2011-08-19 22:08:12

标签: python argparse optparse

我正在使用Python 2.6.2(遗憾的是无法升级到2.7,或者我使用的是argparse)。如何让optparse返回通过'add_option'添加的选项列表?

以下是一些示例代码:

from optparse import OptionParser
parser = OptionParser()
parser.add_option('--one')
parser.add_option('--two')
(opts,args) = parser.parser_args()

optlist = parser.funcToGetListOfOptions()
print optlist
['one', 'two']

我查看了optparse源代码,可以通过访问内部属性来解决这个问题,但这看起来并不是非常犹太。什么是正确的方法?

谢谢!

2 个答案:

答案 0 :(得分:3)

>>> parser._get_all_options()[1:]
[<Option at 0xb7d185ec: --one>, <Option at 0xb7d1866c: --two>]
>>> [x.get_opt_string() for x in parser._get_all_options()[1:]]
['--one', '--two']
>>> [x.dest for x in parser._get_all_options()[1:]]
['one', 'two']

答案 1 :(得分:1)

我使用ast.literal_eval从Convert a String representation of a Dictionary to a dictionary?获得了很好的提示,这是我以前从未使用过的。有了它,并直接从(options, args) = parser.parse_args中的选项调用 str ,您将很快得到您想要的内容。

>>> import ast
>>> ast.literal_eval(options.__str__())
{'one': None, 'two': None}
>>> ast.literal_eval(options.__str__()).keys()
['one', 'two']

这比使用私有方法更便携,你可以使用一个全新的模块。