Python如何输出警告信息


Posted in Python onJuly 30, 2020

问题

你希望自己的程序能生成警告信息(比如废弃特性或使用问题)。

解决方案

要输出一个警告消息,可使用 warning.warn() 函数。例如:

import warnings

def func(x, y, logfile=None, debug=False):
  if logfile is not None:
     warnings.warn('logfile argument deprecated', DeprecationWarning)
  ...

warn() 的参数是一个警告消息和一个警告类,警告类有如下几种:UserWarning, DeprecationWarning, SyntaxWarning, RuntimeWarning, ResourceWarning, 或 FutureWarning.

对警告的处理取决于你如何运行解释器以及一些其他配置。 例如,如果你使用 -W all 选项去运行Python,你会得到如下的输出:

bash % python3 -W all example.py
example.py:5: DeprecationWarning: logfile argument is deprecated
  warnings.warn('logfile argument is deprecated', DeprecationWarning)

通常来讲,警告会输出到标准错误上。如果你想讲警告转换为异常,可以使用 -W error 选项:

bash % python3 -W error example.py
Traceback (most recent call last):
  File "example.py", line 10, in <module>
    func(2, 3, logfile='log.txt')
  File "example.py", line 5, in func
    warnings.warn('logfile argument is deprecated', DeprecationWarning)
DeprecationWarning: logfile argument is deprecated
bash %

讨论

在你维护软件,提示用户某些信息,但是又不需要将其上升为异常级别,那么输出警告信息就会很有用了。 例如,假设你准备修改某个函数库或框架的功能,你可以先为你要更改的部分输出警告信息,同时向后兼容一段时间。 你还可以警告用户一些对代码有问题的使用方式。

作为另外一个内置函数库的警告使用例子,下面演示了一个没有关闭文件就销毁它时产生的警告消息:

>>> import warnings
>>> warnings.simplefilter('always')
>>> f = open('/etc/passwd')
>>> del f
__main__:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='/etc/passwd'
 mode='r' encoding='UTF-8'>
>>>

默认情况下,并不是所有警告消息都会出现。-W 选项能控制警告消息的输出。 -W all 会输出所有警告消息,-W ignore 忽略掉所有警告,-W error 将警告转换成异常。 另外一种选择,你还可以使用 warnings.simplefilter() 函数控制输出。 always 参数会让所有警告消息出现,`ignore 忽略调所有的警告,error 将警告转换成异常。

对于简单的生成警告消息的情况这些已经足够了。 warnings 模块对过滤和警告消息处理提供了大量的更高级的配置选项。 更多信息请参考 Python文档

以上就是Python如何输出警告信息的详细内容,更多关于Python 输出警告信息的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python判断变量是否已经定义的方法
Aug 18 Python
如何利用Fabric自动化你的任务
Oct 20 Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
一个Python最简单的接口自动化框架
Jan 02 Python
python实现壁纸批量下载代码实例
Jan 25 Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
对python dataframe逻辑取值的方法详解
Jan 30 Python
Python基本socket通信控制操作示例
Jan 30 Python
Python爬虫实现vip电影下载的示例代码
Apr 20 Python
Python如何实现邮件功能
May 27 Python
Python设计密码强度校验程序
Jul 30 #Python
详解Pandas 处理缺失值指令大全
Jul 30 #Python
Python 爬虫的原理
Jul 30 #Python
Python爬虫与反爬虫大战
Jul 30 #Python
Python如何将装饰器定义为类
Jul 30 #Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 #Python
Python3爬虫发送请求的知识点实例
Jul 30 #Python
You might like
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
Python中的CURL PycURL使用例子
2014/06/01 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
电子技术专业中专生的自我评价
2013/12/17 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
2014年两会学习心得体会
2014/03/10 职场文书
社区消防工作实施方案
2014/03/21 职场文书
知识竞赛主持词
2014/03/26 职场文书
比赛口号大全
2014/06/10 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python