来源 | 写代码的明哥

责编 | 寇雪芹

头图 | 下载于视觉中国

警告不是异常

你是不是经常在使用一些系统库或者第三方模块的时候,发现一些既不是异常也不是错误的警告信息?这些经常出现的警告信息,容易让新手造成一些误判,以为是程序出错了。

实则不然,异常和错误都是程序出现了一些问题,但是警告不同,他的紧急程度非常之低,以致于大多数的警告都是可以直接忽略的。如果不想显示这些告警信息,可以直接加上参数 -W ignore 参数,就不会再显示了。

警告能捕获吗?

通常情况下,能捕获的只有错误异常,但是通过一系列的操作后,你可以将这些警告转化为异常。这样一来,你就可以像异常一样去捕获它们了。在不进行任何设置的情况下,警告会直接打印在终端上。

 捕获警告的三种方法

  方法一

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

当你指定为 error 的时候,就会将匹配警告转换为异常。

之后你就可以通过异常的方式去捕获警告了。

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

运行后,效果如下:

  方法二

如果你不想对在代码中去配置将警告转成异常,

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

可以在执行的时候加上一个参数 -W error,实现的效果是相同的:

$ python3 -W error demo.py
deprecated

  方法三

除了上面的方法之外 ,warnings 还自带了个捕获警告的上下文管理器。

当你加上 record=True 它会返回一个列表,列表里存放的是所有捕获到的警告,我将它赋值为 w,然后就可以将它打印出来了。

import warningsdef 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 搭建车道智能检测系统☞网易伏羲论文入选 CVPR:AI 感知表情能力或实现巨大突破!
点分享点收藏点点赞点在看

Python 捕获警告相关推荐

  1. python流获取控制台_对Python捕获控制台输出流的方法详解

    有时候我们的代码里可能要调用控制台命令,比如我想用Python写一个批量编译 .java 文件的脚本,用到如下代码 常规用法 os.system import os,traceback try: p ...

  2. python捕获摄像头帧_Xuggler教程:帧捕获和视频创建

    python捕获摄像头帧 注意:这是我们的" Xuggler开发教程 "系列的一部分. 到目前为止,在我们的Xuggler教程系列中,我们已经对视频处理的Xuggler进行了介绍, ...

  3. python 捕获多个异常_Python捕获多个异常

    python 捕获多个异常 We can use a try-except block to catch exceptions and process them. Sometimes we call ...

  4. python关掉警告信息(warning)

    在GCN normalization由于版本问题出现 除0 警告, RuntimeWarning: divide by zero encountered in power d_inv_sqrt = n ...

  5. Python消除警告的实用解决方案

      大家好,我是herosunly.985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用.曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名.拥有多项发明专利.对机器学 ...

  6. python 忽略错误,python忽略警告(warning) 错误实现方法

    这篇文章主要为大家详细介绍了python忽略警告(warning) 错误实现方法,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来 ...

  7. 安装Anaconda,Powershell输入python出现警告问题

    关于安装Anaconda,Powershell输入python出现警告问题 PowerShell输入python出现如下问题 问题再现 问题分析 解决方案 问题解决 PowerShell输入pytho ...

  8. Python捕获 Warning 警告

    warning在Python中是不会被try except捕获的,所以首先修改它,让try except可以捕获warning: import warningswarnings.filterwarni ...

  9. python弹出警告框_selenium+webdriver+python 中警告框的处理方法

    在自动化测试过程中,经常会遇到弹出警告框的情况,如图所示: 在 WebDriver 中处理 JavaScript 所生成的 alert.confirm 以及 prompt 是很简单的.具体做法是使用 ...

最新文章

  1. Codeforces Round #703 (Div. 2)(A ~ F)超高质量题解【每日亿题2 / 19】
  2. 《构建之法》之第8、9、10章读后感
  3. 机器学习-算法背后的理论与优化(part5)--结构风险最小(下)
  4. linux编码 form表单,Linux curl 模拟form表单提交信息和文件
  5. oracle轮询方式循环输出,LGWR的两种模式(POST/WAIT和POLLING)
  6. 基于CMake构建MSVC_CUDA及MinGW编译环境下的的OpenCV项目
  7. JProfiler 简要使用说明
  8. C++ Primer Plus学习(九)——内存模型和名称空间
  9. Android Studio实现一个新闻APP
  10. MFC通过窗口标题获得窗口句柄
  11. 鼠标钩子WH_MOUSE_LL
  12. easyExcel实现excel文件上传和下载
  13. 需要密码才能打开的word文件
  14. 海洋环流与海浪数值模式
  15. android布局 哪个控件在最上层_Android 在最上层添加悬浮View(兼容Android 8.0)
  16. OVP 过压保护电路
  17. XCTF-PWN pwn-200(使用DynELF利用write泄露system地址)
  18. bootstrap v3.3.6 版本.table-striped不起作用的问题
  19. ubuntu 18.04 局域网无法访问内部DNS的解决办法
  20. 电脑摄像头阅卷软件在教学各环节中的实践应用

热门文章

  1. OpenCV学习系列教程第五篇:测试和提高代码的效率
  2. Linux之 手动释放内存
  3. JAVA 设计模式 模板方法模式
  4. 机器学习理论基础到底有多可靠?
  5. 2018-3-10 kKNN与K-mean的区别以及各自的Python代码(别人写的好的文章)
  6. 李宏毅笔记机器学习(四)——Regression——Demo
  7. Sql Server函数全解(四)日期和时间函数
  8. oracle终止用户会话
  9. 实验吧 速度爆破
  10. 20169212 2016-2017-2 《网络攻防实践》第四周学习总结