Ich versuche, bestimmte Werte aus meinem Wörterbuch zu analysieren. Da ich vorher mit Wörterbüchern gearbeitet habe, war ich mir sicher, dass Sie eine ganze Reihe von Ergebnissen mit Ganzzahlen durchlaufen können.KeyError: 0 beim Iterieren von Json durch Python-nmap
Unten ist ein bearbeitetes Beispiel meines nmap Scan (mit gefälschten IPs). Ich versuche, auf die ipv4
Werte zuzugreifen.
{'165.19.100.145': {'addresses': {'ipv4': '165.19.100.145'}}, '165.19.100.200': {'addresses': {'ipv4': '165.19.100.200'}}}
Ich versuche wie so durch das Wörterbuch iterieren:
#!/usr/bin/env python3
import nmap
import json
nm = nmap.PortScanner()
results = nm.scan(hosts='165.19.100.0/24', arguments='-sP')
results_json = json.dumps(results['scan'], indent=4, sort_keys=True, ensure_ascii=False)
json_data = json.loads(results_json)
scan_len = len(json_data)
for x in range(0, scan_len):
ip_address = json_data[x]['addresses']['ipv4']
print(ip_address)
Wenn ich dieses Skript ausführen, erhalte ich eine KeyError: 0
. Ich habe keine Ahnung, warum ich diesen Fehler bekommen könnte. Würde sich die 0
nicht auf die erste 165.19.100.145
beziehen? Was mache ich hier falsch?
Für python3 ersetzen Sie einfach 'iteritems()' 'mit Artikel()' und Klammern um den Druck, aber das funktioniert perfekt. Vielen Dank! – jagdpanzer
Warum über Schlüssel und Wert iterieren und dann nicht "Wert" verwenden, sondern Schlüssel nur zum Abrufen des Werts verwenden Wenn Sie den Schlüssel nicht benötigen, durchlaufen Sie einfach die Werte. Das ist 'json_data.itervalues ()' in Python 2 und 'json_data.values ()' in Python 3. – BlackJack