我正在使用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源代码,可以通过访问内部属性来解决这个问题,但这看起来并不是非常犹太。什么是正确的方法?
谢谢!
答案 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']
这比使用私有方法更便携,你可以使用一个全新的模块。