使用python在日志文件中使用目标IP地址进行keyerror

时间:2017-09-11 12:38:56

标签: python

我将发布我在python代码中得到的错误。当我读取我的日志文件

时,我的目标IP地址出现了错误
  if "dstport" in p:

                if p["dstport"] in counts:
                    counts[str(p["dstport"])] += 1
                else:
                    counts[str(p["dstport"])] = 1

                if p["dstip"] in ip_counts:
                    ip_counts[str(p["dstip"])] += 1
                else:
                    ip_counts[str(p["dstip"])] = 1
                asc_order.append(p["dstport"])

                ip_port[p["dstip"]] = int(p["dstport"])
            else:
                print "ini"
                if p["dstip"] in ip_counts:
                    ip_counts[str(p["dstip"])] += 1
                else:
                    ip_counts[str(p["dstip"])] = 1                    
    print ip_counts
    sorted_x = sorted(ip_port.items(), key=operator.itemgetter(1))
    ip_list = [ip for ip, port in sorted_x]
    ip_short_long = [ip2long(ips) for ips in ip_list]
    ip_short_long.sort()
    ip_sort = [long2ip(ip) for ip in ip_short_long]    
    for ip in ip_sort:
        print ip 
if __name__ == "__main__": main()

我的错误是

     if p["dstip"] in ip_counts:
    KeyError: 'dstip'   

1 个答案:

答案 0 :(得分:1)

检查条件时使用 p.get("dstip") 因此,如果字典中没有这样的密钥,它就不会抛出异常。

Why using get intead of dict["key"] ?