我正在使用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源代码,可以通过访问内部属性来找出它,但这似乎不太合适。正确的做法是什么?
谢谢!
>>> 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']
我从转换字符串表示的字典到字典得到了一个很好的提示?,使用我以前从未使用过的ast.literal_eval。有了它,并直接从(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']
这比使用私有方法可移植得多,而且你可以使用一个全新的模块。