Python编程中如何捕获警告ps不是捕获异常

 更新时间:2021年10月25日 09:47:06   作者:写代码的明哥  
这篇文章主要为大家介绍了如何使用Python捕获警告,注意:不是捕获异常哦,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步

1. 警告不是异常

你是不是经常在使用一些系统库或者第三方模块的时候,会出现一些既不是异常也不是错误的警告信息?

这些警告信息,有时候非常多,对于新手容易造成一些误判,以为是程序出错了。

实则不然,异常和错误,都是程序出现了一些问题,但是警告不同,他的紧急程度非常之低,以致于大多数的警告都是可以直接忽略的。

如果不想显示这些告警信息,可以直接加上参数 -W ignore 参数,就不会再显示了。

2. 警告能捕获吗

能捕获的只有错误异常,但是通过一系列的操作后,你可以将这些警告转化为异常。

这样一来,你就可以像异常一样去捕获他们了。

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

3. 捕获警告方法一

在 warnings 中有一系列的过滤器。

处置
default 为发出警告的每个位置(模块+行号)打印第一个匹配警告
error 将匹配警告转换为异常
ignore 从不打印匹配的警告
always 总是打印匹配的警告
module 为发出警告的每个模块打印第一次匹配警告(无论行号如何)
once 无论位置如何,仅打印第一次出现的匹配警告

当你指定为 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)

运行后,效果如下

文章最后给大家介绍三个我自己写的在线文档:

第一个文档:PyCharm 中文指南 1.0 文档

花了两个多月的时间,整理了 100 个 PyCharm 的使用技巧,为了让新手能够直接上手,我花了很多的时间录制了上百张 GIF 动图,有兴趣的前往在线文档阅读。

第二个文档:PyCharm 黑魔法指南 1.0 文档

系统收录各种 Python 冷门知识,Python Shell 的多样玩法,令人疯狂的 Python 炫技操作,Python 的超详细进阶知识解读,非常实用的 Python 开发技巧等。

第三个文档:Python 中文指南 1.0 文档

花了三个月时间写的一本 适合零基础入门 Python 的全中文教程,搭配大量的代码案例,让初学者对 代码的运作效果有一个直观感受,教程既有深度又有广度,每篇文章都会标内容的难度,是基础还是进阶的,可供读者进行选择,是一本难得的 Python 中文电子教程。

以上就是Python捕获警告ps不是捕获异常的详细内容,更多关于Python捕获警告的资料请关注脚本之家其它相关文章!

相关文章

  • python标准库turtle海龟绘图实现简单奥运五环

    python标准库turtle海龟绘图实现简单奥运五环

    这篇文章主要为大家介绍了python使用turtle实现最简单简单奥运五环绘图,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python 实现域名解析为ip的方法

    Python 实现域名解析为ip的方法

    今天小编就为大家分享一篇Python 实现域名解析为ip的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python学习之异常处理详解

    Python学习之异常处理详解

    正常情况下,我们的程序是自上而下的逐行执行,执行到最后一行才会终止程序的执行。而异常的情况会导致我们的程序半途而废停止了执行。本文将通过示例详细讲解Python中的异常处理,感兴趣的可以学习一下
    2022-03-03
  • Python实现绘制置信区间

    Python实现绘制置信区间

    置信区间是从观测数据的统计量计算的一种估计值,它给出了一个可能包含具有特定置信水平的总体参数的值范围,下面我们就来看看如何使用Python绘制置信区间吧
    2024-02-02
  • selenium动态数据获取的方法实现

    selenium动态数据获取的方法实现

    本文主要介绍了selenium动态数据获取的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Pandas数据分析-pandas数据框的多层索引

    Pandas数据分析-pandas数据框的多层索引

    这篇文章主要介绍了Pandas数据分析-pandas数据框的多层索引,pandas数据框针对高维数据,也有多层索引的办法去应对具体详细的内容介绍需要的小伙伴可以参考一下
    2022-08-08
  • python中统计相同字符的个数方法实例

    python中统计相同字符的个数方法实例

    我们在开发中经常需要统计某个字符或字符串出现的次数,下面这篇文章主要给大家介绍了关于python中统计相同字符的个数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • Python中切片的详细操作篇

    Python中切片的详细操作篇

    在Python中切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法,下面这篇文章主要给大家介绍了关于Python中切片操作的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 写好Python代码的几条重要技巧

    写好Python代码的几条重要技巧

    好的代码具有易理解、可扩展、易维护的特点,简直是人见人爱。本文就将介绍写好python代码的多个技巧
    2021-05-05
  • VSCode格式化Python文件的方法

    VSCode格式化Python文件的方法

    这篇文章主要介绍了VSCode格式化Python文件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12

最新评论