Python除外错误(多个错误)

时间:2018-12-25 15:18:40

标签: python python-3.x error-handling geolocation

我正在使用python3。我使用数据库查找IP的国家/地区,如果IP不在数据库中,则返回None或AAA。完成所有过程后,在数据框中的新列中显示返回结果(国家名称或None或AAA)。具体来说,我在数据框中有三列分别是日期时间和IP,我想添加一个新列“ code1”,显示国家名称或此IP无。

我在代码中添加了错误异常,但是它不起作用。代码和错误消息如下。有人可以帮忙吗?

enter image description here

enter image description here

以下是将“从geoip2.errors导入AddressNotFoundError”添加到我的代码中时的报告。我想这意味着在数据库中找不到地址时,它什么也不会返回,而是返回“ none”(请参见,有一个空的方括号),因此,当我使用df ['code1'] = code1时,它将报告值的数量不等于索引的数量。 (我不确定)。

实际上,我的目标是在原始数据框中添加一列,以报告每个IP的国家/地区,如果该国家/地区不在数据库中,则不报告。还有其他方法可以代替“ df ['code1'] = code1”吗?任何帮助将不胜感激。谢谢

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

异常与Python中的其他任何对象一样。它们必须在某处定义。在这种情况下,AddressNotFoundError未定义,因此解释器不知道它的含义。

它必须被导入:

from geoip2.errors import AddressNotFoundError

import geoip2.errors.AddressNotFoundError

请参阅geoip2 documentation的相关部分。

答案 1 :(得分:0)

您可以只留下AddressNotFoundError,而不必这样做

try:
    response1 = reader.country(row1)
    code1.append(response1.country.iso_code)
except:
    response1 = None

但是如果您只想除AddressNotFoundError之外,则在顶部做

import geoip.errors.AddressNotFoundError