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 相关文章推荐
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 Python
Python中bisect的用法
Sep 23 Python
Python遍历目录的4种方法实例介绍
Apr 13 Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
python3.5 tkinter实现页面跳转
Jan 30 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
Python切片操作深入详解
Jul 27 Python
Python中单线程、多线程和多进程的效率对比实验实例
May 14 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
Python安装Bs4的多种方法
Nov 28 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记录搜索引擎蜘蛛访问网站足迹的方法
2015/04/15 PHP
php实现的顺序线性表示例
2019/05/04 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
详解javascript遍历方式
2015/11/11 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
vue实现弹幕功能
2019/10/25 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
Python configparser模块操作代码实例
2020/06/08 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
HTML5 WebGL 实现民航客机飞行监控系统
2019/07/25 HTML / CSS
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
会计专业毕业生求职信分享
2014/01/03 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
单位介绍信格式范文
2015/05/04 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
对讲机知识
2022/04/07 无线电