Cái nhìn tệp json của tôi thích cái này và tôi đang cố truy cập phần tử syslog
trong vòng lặp for.LoạiError: chỉ mục danh sách phải là số nguyên, không phải là số nguyên
{
"cleanup":{
"folderpath":"/home/FBML7HR/logs",
"logfilename":""
},
"preparation":{
"configuration":{
"src_configfile":"src.cfg",
"dest_configfile":"/var/home/FBML7HR/etc/vxn.cfg"
},
"executable_info1":[
{
"login_info":{
"hostname":"10.4.0.xxx",
"username":"***",
"password":"***"
}
},
{
"command":{
"folderpath":"/var/home/FBML7HR/SrcCode/vxnservers/fdchost/north/test/hostsim/",
"processname":"northhostsim",
"parameters":"-d"
}
}
],
"executable_info2":[
{
"login_info":{
"hostname":"10.4.0.xxx",
"username":"***",
"password":"***"
}
},
{
"command":{
"folderpath":"/var/home/FBML7HR/SrcCode/vxnservers/fdchost/north/build/Linux-2.6.18-194.8.1.el5/bin",
"processname":"northhost",
"parameters":"-s brazil -d"
}
}
],
"executable_info3":[
{
"login_info":{
"hostname":"10.4.0.xxx",
"username":"***",
"password":"***"
}
},
{
"command":{
"folderpath":"cd /var/home/xxx/SrcCode/vxnservers/fdchost/north/test/vxnclient_mt",
"processname":"vxnclient_north_mt",
"parameters":"0 320 205 14897 16880 60000 60000 2 2"
}
}
]
},
"execution":[
{
"test_case":{
"scriptname":"/var/home/FBML7HR/test/testcase1.sh",
"testreport":{
"syslog":"/var/log/messages",
"backupsyslog":"backuplogs1.txt",
"clientsimlog":"/var/home/FBML7HR/test/out.log",
"backupclientsimlog":"Clientlogs1.txt"
}
}
},
{
"test_case":{
"scriptname":"/var/home/FBML7HR/test/testcase2.sh",
"testreport":{
"syslog":"/var/log/messages",
"backupsyslog":"backuplogs2.txt",
"clientsimlog":"/var/home/FBML7HR/test/out.log",
"backupclientsimlog":"Clientlogs2.txt"
}
}
}
],
"verification":{
"testreport":{
"syslog":"/var/log/messages",
"backupsyslog":"backuplogs.txt",
"reportfilename":"/var/home/FBML7HR/test/out.log",
"backuplogfile":"Clientlogs.txt"
}
}
}
tôi làm điều đó như thế này:
for i in data['execution']:
cmd = data['execution'][i]['test_case']['scriptname']
Nhưng tôi nhận được lỗi nói rằng "Lỗi Loại: chỉ số danh sách phải là số nguyên, không dict". Tôi mới dùng python (và json). Ai có thể gợi ý tôi đi sai đâu?
Rõ ràng 'i' là một 'dict', vì vậy bạn không thể sử dụng nó để lập chỉ mục thành 'dữ liệu ['thực thi']'. Không phải đó chỉ là 'cho tôi trong dữ liệu ['thi hành']: cmd = i ['test_case'] ['scriptname']'? – jonrsharpe
có vẻ như 'dữ liệu' là một danh sách chứ không phải từ điển. Bạn có chắc từ điển này không có một '[]' kèm theo không? – karthikr