从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)