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

目录
  • 1. 警告不是异常
  • 2. 警告能捕获吗
  • 3. 捕获警告方法一
  • 4. 捕获警告方法二
  • 5. 捕获警告方法三

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捕获警告的资料请关注我们其它相关文章!

(0)

相关推荐

  • python 弹窗提示警告框MessageBox的实例

    需要安装pywin32模块,pip install pywin32 ##pip install pywin32 import win32api,win32con ##提醒OK消息框 win32api.MessageBox(0, "这是一个测试提醒OK消息框", "提醒",win32con.MB_OK) ##是否信息框 win32api.MessageBox(0, "这是一个测试是否信息框", "提醒",win32con.MB_

  • Python爬虫之Selenium警告框(弹窗)处理

    JavaScript 有三种弹窗 Alert (只有确定按钮), Confirmation (确定,取消等按钮), Prompt (有输入对话框),而且弹出的窗口是不能通过前端工具对其进行定位的,这个时候就可以通过switch_to.alert方法来定位这个弹窗,并进行一系列的操作. 本章中用到的关键方法如下: switch_to.alert:定位到警告框 text:获取警告框中的文字信息 accept():接受现有警告框(相当于确认) dismiss():解散现有警告框(相当于取消) send

  • Python warning警告出现的原因及忽略方法

    python开发中经常遇到报错的情况,但是warning通常并不影响程序的运行,而且有时特别讨厌,下面我们来说下如何忽略warning错误. 在说忽略warning之前,我们先来说下如何主动产生warning错误,这里用到warnings模块,看如下代码: import warnings def fxn(): warnings.warn("deprecated", DeprecationWarning) with warnings.catch_warnings(): warnings.

  • Python如何输出警告信息

    问题 你希望自己的程序能生成警告信息(比如废弃特性或使用问题). 解决方案 要输出一个警告消息,可使用 warning.warn() 函数.例如: import warnings def func(x, y, logfile=None, debug=False): if logfile is not None: warnings.warn('logfile argument deprecated', DeprecationWarning) ... warn() 的参数是一个警告消息和一个警告类,

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

    目录 1. 警告不是异常 2. 警告能捕获吗 3. 捕获警告方法一 4. 捕获警告方法二 5. 捕获警告方法三 1. 警告不是异常 你是不是经常在使用一些系统库或者第三方模块的时候,会出现一些既不是异常也不是错误的警告信息? 这些警告信息,有时候非常多,对于新手容易造成一些误判,以为是程序出错了. 实则不然,异常和错误,都是程序出现了一些问题,但是警告不同,他的紧急程度非常之低,以致于大多数的警告都是可以直接忽略的. 如果不想显示这些告警信息,可以直接加上参数 -W ignore 参数,就不会再

  • Python编程中的反模式实例分析

    本文实例讲述了Python编程中的反模式.分享给大家供大家参考.具体分析如下: Python是时下最热门的编程语言之一了.简洁而富有表达力的语法,两三行代码往往就能解决十来行C代码才能解决的问题:丰富的标准库和第三方库,大大节约了开发时间,使它成为那些对性能没有严苛要求的开发任务的首选:强大而活跃的社区,齐全的文档,也使很多编程的初学者选择了它作为自己的第一门编程语言.甚至有国外的报道称,Python已经成为了美国顶尖大学里最受欢迎的编程入门教学语言. 要学好一门编程语言实属不易,在初学阶段,就

  • Python编程中NotImplementedError的使用方法

    Python编程中raise可以实现报出错误的功能,而报错的条件可以由程序员自己去定制.在面向对象编程中,可以先预留一个方法接口不实现,在其子类中实现. 如果要求其子类一定要实现,不实现的时候会导致问题,那么采用raise的方式就很好. 而此时产生的问题分类是NotImplementedError. 写一段代码如下: class ClassDemo: def test_demo(self): raiseNotImplementedError("my test: not implemented!&

  • Python编程中*args与**kwargs区别作用详解

    相信学Python的小伙伴肯定有这样的尴尬局面,给一个函数不会用, 原因是:不知道参数列表中的类型是什么意思,比如初学者都会疑问的:*args和**kwargs到底是怎么用. 当你知道这个时,我猜你肯定能会用好多函数了! #*args的用法:当传入的参数个数未知,且不需要知道参数名称时. def func_arg(farg, *args): print("formal arg:", farg) for arg in args: print("another arg:"

  • Python编程中闭包的变量作用域问题解析

    目录 闭包 闭包中的变量 闭包 ​ 在我们使用返回函数的时候,由于我们在一个函数中需要返回另一个函数,因此,我们在这个函数中就需要重新定义一个函数.而这样,就造成了我们的函数嵌套问题.外面的函数相对于里面的函数而言是外函数(outer function),而里面的我们叫他内函数(inner function). def outerFunction(): #外函数 def innerFunction(): #内函数 x = 1 return x return innerFunction #返回值是

  • Python编程中非常重要却又被严重低估的库decorator

    目录 常规的装饰器 使用神库 带参数的装饰器 签名问题有解决? 总结一下 本文已经收录于<Python黑魔法手册>v2.1 版本,在线文档请前往 Python黑魔法手册 2.0 文档 这个库可以帮你做什么呢 ? 其实很简单,就是可以帮你更方便地写python装饰器代码,更重要的是,它让 Python 中被装饰器装饰后的方法长得更像装饰前的方法. 不了解装饰器的可以先去阅读我们之前的文章,非常全且详细的介绍了装饰器的各种实现方法. 常规的装饰器 下面这是一个最简单的装饰器示例,在运行 myfun

  • python编程中简洁优雅的推导式示例详解

    目录 1. 列表推导式 增加条件语句 多重循环 更多用法 2. 字典推导式 3. 集合推导式 4. 元组推导式 Python语言有一种独特的推导式语法,相当于语法糖的存在,可以帮助你在某些场合写出较为精简酷炫的代码.但没有它,也不会有太多影响.Python语言有几种不同类型的推导式. 1. 列表推导式 列表推导式是一种快速生成列表的方式.其形式是用方括号括起来的一段语句,如下例子所示: lis = [x * x for x in range(1, 10)] print(lis) 输出 [1, 4

  • Python编程中内置的NotImplemented类型的用法

    目录 一.NotImplemented它是什么? 二.它有什么用?什么时候用? 一.NotImplemented它是什么? >>> type(NotImplemented) <type 'NotImplementedType'> NotImplemented 是Python在内置命名空间中的六个常数之一.其他有False.True.None.Ellipsis 和 debug.和 Ellipsis很像,[NotImplemented] 能被重新赋值(覆盖).对它赋值,甚至改变属

  • 详解Python编程中基本的数学计算使用

    数 在 Python 中,对数的规定比较简单,基本在小学数学水平即可理解. 那么,做为零基础学习这,也就从计算小学数学题目开始吧.因为从这里开始,数学的基础知识列位肯定过关了. >>> 3 3 >>> 3333333333333333333333333333333333333333 3333333333333333333333333333333333333333L >>> 3.222222 3.222222 上面显示的是在交互模式下,如果输入 3,就显

  • 解析Python编程中的包结构

    假设你想设计一个模块集(也就是一个"包")来统一处理声音文件和声音数据.通常由它们的扩展有不同的声音格式,例如:WAV,AIFF,AU),所以你可能需要创建和维护一个不断增长的各种文件格式之间的转换的模块集合.并且可能要执行声音数据处理(如混合,添加回声,应用平衡功能),所以你写一个永无止境的流模块来执行这些操作:模块设计的包如下: sound/ Top-level package __init__.py Initialize the sound package formats/ Su

随机推荐