Python 除外错误(多个错误)

Posted

技术标签:

【中文标题】Python 除外错误(多个错误)【英文标题】:Python Except Errors (multiple errors) 【发布时间】:2018-12-25 15:18:39 【问题描述】:

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

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

以下是我在代码中添加“from geoip2.errors import AddressNotFoundError”时的报告。我猜这意味着当在数据库中找不到地址时,它只返回“无”(请参阅​​,有一个空方括号),因此,当我使用 df['code1']=code1 时,它会报告值的数量不等于索引的数量。 (我不确定)。

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

【问题讨论】:

【参考方案1】:

异常就像 Python 中的任何其他对象一样。它们必须在某个地方定义。在这种情况下,AddressNotFoundError 没有定义,因此解释器不知道它的含义。

必须导入:

from geoip2.errors import AddressNotFoundError

import geoip2.errors.AddressNotFoundError

查看 geoip2 documentation 的相关部分。

【讨论】:

感谢您的帮助。它也不起作用,我添加了 import geoip2.errors.AddressNotFoundError,它返回“ModuleNotFoundError: No module named 'geoip2.errors.AddressNotFoundError'; 'geoip2.errors' is not a package” 很抱歉,我不知道如何正确通过上面的屏幕截图。它显示的是链接而不是图片。如果您单击上面的图片链接,它会显示当我从 geoip2.errors import AddressNotFoundError 添加时报告的内容。任何帮助将不胜感激【参考方案2】:

你可以省略 AddressNotFoundError 而是做

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

但如果你真的只想除了 AddressNotFoundError 然后在顶部做

import geoip.errors.AddressNotFoundError

【讨论】:

我自己试试看,你运行的是什么版本的python? 当我省略 AddressNotFoundError 时,它返回“ValueError:值的长度与索引的长度不匹配”。此外,当我添加“import geoip.errors.AddressNotFoundError”时,它返回“ModuleNotFoundError: No module named 'geoip'”。 我刚刚意识到你应该试试这个:from geoip2.errors import AddressNotFoundError 我使用 python 3. 很抱歉,我不知道如何正确通过上面的屏幕截图。它显示的是链接而不是图片。如果您单击上面的图片链接,它会显示当我从 geoip2.errors import AddressNotFoundError 添加时报告的内容。任何帮助将不胜感激

以上是关于Python 除外错误(多个错误)的主要内容,如果未能解决你的问题,请参考以下文章

Python - 运行多个使用多处理的 python 脚本有时会影响性能和错误

Python zipfile 模块错误地认为我有一个跨越多个磁盘的 zipfile,抛出 BadZipfile 错误

python lambda引发带有多个参数的变量未定义错误

python中并行解决多个独立LP并出现关键错误

使用 pyinstaller 编译时“除外”期间的 mysql.connector 错误?

python常见异常和异常捕获