def taskCompletionCheck(self, jsonFile):
json_data=open(jsonFile)
data = json.load(json_data)
json_data.close()
wsTaskStatus = {}
taskstatus = {}
mydict = {}
''' Assuming the json file structure is similar to
{"tasks":
[{"name":"SA","result":"PASS"},
{"name":"CR","result":"PASS"},
{"name":"UT","result":"fail"}],
"masks":{"id":"valore"},
"om_points":"value",
"parameters":{"id":"valore"}}
'''
for item in data:
keyExists = data[item].get("auto-approve-plugin-status")
if keyExists != None:
for elem in data[item]["auto-approve-plugin-status"] :
mylist = elem["auto-approve-enclosure-names"]
mydict["status"] = elem["auto-approve-status"]
mydict["enclosure-names"] = mylist
taskid = elem["auto-approve-plugin-name"]+"_"+item
taskstatus[taskid] = mydict
print taskstatus
return taskstatus
當我宣佈在全球範圍內mydict(外for循環),taskstatus將不包含MYLIST,磁盤陣列的名稱值將只包含O的。後來我將mydict放在for循環中,它工作正常。任何人都可以解釋我發生了什麼事範圍的字典的
if keyExists != None:
for elem in data[item]["auto-approve-plugin-status"] :
mydict = {}
mylist = elem["auto-approve-enclosure-names"]
mydict["status"] = elem["auto-approve-status"]
mydict["enclosure-names"] = mylist
taskid = elem["auto-approve-plugin-name"]+"_"+item
taskstatus[taskid] = mydict
這是taskstatus會是什麼樣子:
{"CR" : {"status" : "fail" , "enclosure-names" : [a,b,c]},
"UT" : {"status" : "pass" , "enclosure-names" : [d,e]}}
此代碼無效,有一個返回語句,但沒有功能。我建議將給你一個問題的確切代碼複製到一個單獨的文件中,並試圖讓它在隔離其他代碼的情況下運行。一旦運行,請將其複製到您的問題中。 – 2014-03-26 01:11:59