Python捕获警告的三种方法

方予
方予
发布时间:2026-10-15| 1人浏览过
原创

本文详解Python中处理警告信息的三种有效方法。首先明确警告与异常的区别,随后分别介绍通过warnings.filterwarnings将警告转为异常、使用-W error命令行参数以及在代码中使用catch_warnings上下文管理器记录警告。掌握这些技巧有助于更精准地控制程序输出与错误排查。

1. 警告不是异常

在使用系统库或第三方模块时,你是否经常遇到既非异常也非错误的警告信息?

这类警告信息有时数量庞大,容易让新手产生误判,误以为程序出现了错误。

实际上,异常和错误代表程序存在具体问题,而警告的紧急程度极低,大多数情况下可以直接忽略。

若希望隐藏这些告警信息,只需添加-W ignore参数,即可不再显示相关警告。

2. 警告能捕获吗

通常只有错误异常才能被直接捕获,但通过特定操作,可以将警告转换为异常。

完成转换后,即可像处理异常一样对警告进行捕获。

在未进行任何设置的情况下,警告会直接打印在终端上。

3. 捕获警告方法一

warnings模块提供了一系列过滤器。

当指定过滤器为error时,匹配的警告将被转换为异常。

此后,即可通过处理异常的方式来捕获警告。


import warnings
warnings.filterwarnings('error')    

try:
    warnings.warn("deprecated", DeprecationWarning)
except Warning as e:
    print(e)

运行后的效果如下

4. 捕获警告方法二

如果不想在代码中配置将警告转为异常的逻辑。


import warnings

try:
    warnings.warn("deprecated", DeprecationWarning)
except Warning as e:
    print(e)

可以在执行时添加参数 -W error ,即可实现相同的效果。


$ python3 -W error demo.py
deprecated

5. 捕获警告方法三

除上述方法外,warnings模块还内置了一个用于捕获警告的上下文管理器。

当设置record=True时,它会返回一个列表,其中包含所有捕获到的警告。将其赋值给w后,即可将其打印输出。


import warnings

def do_warning():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings(record=True) as w:
    do_warning()
    if len(w) >0:
        print(w[0].message)

运行后的效果如下

以上就是Python捕获警告的三种方法的详细内容,更多关于Python捕获警告的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。