我在我的代码中定义了一个名为cfg
的字典。
cfg = { 'debug': 1, 'verbose': 1, 'cfgfile': 'my.cfg' }
使用ConfigParser
我解析一个配置文件,该文件可用于覆盖上面cfg
中定义的硬编码值,并按如下方式合并:
config = SafeConfigParser()
config.read(cfg['cfgfile'])
cfg.update(dict(config.items('Main')))
以上都正常。
我现在调用一个使用optparse
来解析命令行参数的函数。
def parseOptions():
parser = OptionParser()
parser.add_option("-d", "", dest="debug", action="store_true", default=False, help="enable additional debugging output")
parser.add_option("-v", "", dest="verbose", action="store_true", default=False, help="enable verbose console output")
(options, args) = parser.parse_args()
return options
回到main()
,options
在目视检查时似乎是字典:
options = parseOptions()
print options
{'debug': False, 'verbose': False}
当我尝试更新我的cfg
字典时,我收到此错误:
cfg.update(dict(options))
输出:
Traceback (most recent call last):
File "./myscript.py", line 176, in <module>
cfg.update(dict(options))
TypeError: iteration over non-sequence
选项的类型是值的实例:
print "type(options)=%s instanceof=%s\n" % (type(options), options.__class__.__name__)
type(options)=<type 'instance'> instanceof=Values
如何使用cfg
中的值更新我的options
词典?
答案 0 :(得分:2)
尝试使用vars()
:
options = parseOptions()
option_dict = vars(options)
cfg.update(option_dict)