从python对象编辑键-获取类型错误:非序列上的迭代
当我打印变量时从python对象编辑键-获取类型错误:非序列上的迭代,python,python-2.7,Python,Python 2.7,当我打印变量时 print myOptions 我明白了 (为了可读性增加了换行符) 所以在我看来,它就像一对键/值。我想像这样迭代它: for key in myOptions: if key == "instanceProfile": myOptions.value = myOptions.value.replace(":ENV:", "dev") 但是当我运行代码时,我得到了“TypeError:interaction over non sequence” 那么
print myOptions
我明白了
(为了可读性增加了换行符)
所以在我看来,它就像一对键/值。我想像这样迭代它:
for key in myOptions:
if key == "instanceProfile":
myOptions.value = myOptions.value.replace(":ENV:", "dev")
但是当我运行代码时,我得到了“TypeError:interaction over non sequence”
那么,我如何确定对象的类型,以及如何遍历存在的键/值对(字典?)
我使用的是python版本2.7.8,如果这有什么不同的话
当我打印“打印myOptions.类”时,我会得到“optpass.Values”
myOptions的构建是非常复杂的
from optparse import OptionParser
_opt = OptionParser("%prog [options] configfiles...")
_opt.add_option("-v", "--verbose", ...)
_opt.add_option("-r", "--runcommon", ...)
.... a bunch of _opt.add_option
import shlex
def parse(filename, defaults):
myopt, args = _opt.parse_args(shlex.split(open(filename).read()), defaults)
return myopt
if __name__ == "__main__":
import sys
myOptions, args = _opt.parse_args()
myOptions = parse("default.ini", myOptions)
for arg in args:
myOptions = parse(arg, myOptions)
myOptions, args = _opt.parse_args(values = myOptions)
argConfigurationName = args[-1]
if (myOptions.name == None):
myOptions.name = argConfigurationName
if myOptions.verbose == True:
print "Configuration Variables"
for name in _opt.defaults:
print "\t", name, "=", getattr(myOptions, name)
尝试
打印类型(myOptions)
并发布结果键入打印类型(myOptions)
时会发生什么?你看到了什么?它是一个dict
还是一个str
?它看起来也像一个JSON字符串。如果myOptions
是str
,请尝试执行import json
out=json.loads(myOptions)
,这样您就可以将json对象转换为dict
。type返回为“”,它看起来像一个老式的类-打印myOptions.\uuu class\uuuuuuuu-并告诉我们该类是什么。如果您告诉我们myOptions的实际来源和分配方式,也会非常有帮助。
from optparse import OptionParser
_opt = OptionParser("%prog [options] configfiles...")
_opt.add_option("-v", "--verbose", ...)
_opt.add_option("-r", "--runcommon", ...)
.... a bunch of _opt.add_option
import shlex
def parse(filename, defaults):
myopt, args = _opt.parse_args(shlex.split(open(filename).read()), defaults)
return myopt
if __name__ == "__main__":
import sys
myOptions, args = _opt.parse_args()
myOptions = parse("default.ini", myOptions)
for arg in args:
myOptions = parse(arg, myOptions)
myOptions, args = _opt.parse_args(values = myOptions)
argConfigurationName = args[-1]
if (myOptions.name == None):
myOptions.name = argConfigurationName
if myOptions.verbose == True:
print "Configuration Variables"
for name in _opt.defaults:
print "\t", name, "=", getattr(myOptions, name)