KeyError:通过python-nmap

时间:2017-06-14 17:16:03

标签: python json python-3.x dictionary 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吗?我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

因为您不是在列表上迭代而是在字典上迭代。字典中没有索引。 宁可这样做:

for key, value in json_data.iteritems():
    print json_data[key]['addresses']['ipv4']