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中xrange用法分析
Apr 15 Python
Python 中的 else详解
Apr 23 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
Python装饰器知识点补充
May 28 Python
Python高级特性与几种函数的讲解
Mar 08 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
pandas 层次化索引的实现方法
Jul 06 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
用python拟合等角螺线的实现示例
Dec 27 Python
python scipy 稀疏矩阵的使用说明
May 26 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
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
php实现微信企业转账功能
2018/10/02 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
2020/05/28 Javascript
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python实现排序算法解析
2018/09/08 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
python保留小数位的三种实现方法
2020/01/07 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
Java面向对象面试题
2016/12/26 面试题
优秀的毕业生的自我评价
2013/12/12 职场文书
车辆安全检查制度
2014/01/12 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
作文评语大全
2014/04/23 职场文书
学生操行评语大全
2014/04/24 职场文书
2015年化验员工作总结
2015/04/10 职场文书
化工厂员工工作总结
2015/10/15 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
opencv检测动态物体的实现
2021/07/21 Python
关于k8s环境部署mysql主从的问题
2022/03/13 MySQL