KeyError: 0 when iterating json through python-nmap
KeyError: 0 when iterating json through python-nmap
我正在尝试从我的字典中解析出特定值。之前使用过字典,我确信您可以使用整数遍历一定长度的结果。
下面是我的 nmap 扫描的编辑示例(使用假 IP)。我正在尝试访问 ipv4
值。
{'165.19.100.145': {'addresses': {'ipv4': '165.19.100.145'}}, '165.19.100.200': {'addresses': {'ipv4': '165.19.100.200'}}}
我正在尝试像这样遍历字典:
#!/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)
当我运行这个脚本时,我得到一个KeyError: 0
。我不知道为什么我会收到这个错误。 0
不是指第一个 165.19.100.145
吗?我在这里做错了什么?
因为您不是在列表上而是在字典上迭代。字典 afaik 中没有索引。
最好这样做:
for key, value in json_data.iteritems():
print json_data[key]['addresses']['ipv4']
我正在尝试从我的字典中解析出特定值。之前使用过字典,我确信您可以使用整数遍历一定长度的结果。
下面是我的 nmap 扫描的编辑示例(使用假 IP)。我正在尝试访问 ipv4
值。
{'165.19.100.145': {'addresses': {'ipv4': '165.19.100.145'}}, '165.19.100.200': {'addresses': {'ipv4': '165.19.100.200'}}}
我正在尝试像这样遍历字典:
#!/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)
当我运行这个脚本时,我得到一个KeyError: 0
。我不知道为什么我会收到这个错误。 0
不是指第一个 165.19.100.145
吗?我在这里做错了什么?
因为您不是在列表上而是在字典上迭代。字典 afaik 中没有索引。 最好这样做:
for key, value in json_data.iteritems():
print json_data[key]['addresses']['ipv4']