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实现数通设备端口使用情况监控实例
Jul 15 Python
Python 功能和特点(新手必学)
Dec 30 Python
Python对多属性的重复数据去重实例
Apr 18 Python
python实现祝福弹窗效果
Apr 07 Python
python ChainMap的使用和说明详解
Jun 11 Python
关于Tensorflow使用CPU报错的解决方式
Feb 05 Python
Python类和实例的属性机制原理详解
Mar 21 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
python如何调用百度识图api
Sep 29 Python
如何用python实现一个HTTP连接池
Jan 14 Python
Python爬虫基础初探selenium
May 31 Python
Python爬虫 简单介绍一下Xpath及使用
Apr 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
PHP 柱状图实现代码
2009/12/04 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
Jquery实现Div上下移动示例
2014/04/23 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
python提取字典key列表的方法
2015/07/11 Python
python实现网站的模拟登录
2016/01/04 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
python进行两个表格对比的方法
2018/06/27 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
python字典按照value排序方法
2020/12/28 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
客服工作职责
2013/12/11 职场文书
中学生爱国演讲稿
2013/12/31 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
教师节简报
2015/07/20 职场文书
小学数学教学反思范文
2016/02/16 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
python编写函数注意事项总结
2021/03/29 Python
MySQL视图概念以及相关应用
2022/04/19 MySQL