Meine JSON-Datei aussehen mag dies und ich versuche, das Element syslog
in einer for-Schleife zugreifen.TypeError: Liste Indizes müssen Ganzzahlen, nicht dict
{
"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"
}
}
}
Ich mache es wie folgt aus:
for i in data['execution']:
cmd = data['execution'][i]['test_case']['scriptname']
Aber ich erhalte die Fehlermeldung, dass "Typeerror: Liste Indizes ganze Zahlen sein müssen, nicht dict". Ich bin neu in Python (und Json auch). Könnte jemand vorschlagen, wo ich falsch liege?
Offensichtlich 'I' ist ein' dict', Sie können es also nicht verwenden, um in 'Daten ['Ausführung'] 'zu indizieren. Sollte das nicht einfach "für i in data ['execution'] sein: cmd = i ['test_case'] ['scriptname']'? – jonrsharpe
sieht aus wie 'Daten' ist eine Liste und kein Wörterbuch. Sind Sie sicher, dass dieses Wörterbuch kein einschließendes '[]' hat? – karthikr