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实现清屏的方法
Apr 30 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
python 中xpath爬虫实例详解
Aug 26 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
详解Python 函数参数的拆解
Sep 02 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
Jan 27 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 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编程效率 引入缓存机制提升性能
2010/02/15 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
js中url对象化管理分析
2017/12/29 Javascript
axios使用拦截器统一处理所有的http请求的方法
2018/11/02 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
Python的randrange()方法使用教程
2015/05/15 Python
python3.7.0的安装步骤
2018/08/27 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
python 如何调用 dubbo 接口
2020/09/24 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
SQL Server笔试题
2012/01/10 面试题
电子商务应届生求职信
2013/11/16 职场文书
大门门卫岗位职责
2013/11/30 职场文书
节能减排倡议书
2014/04/15 职场文书
师范毕业生求职信
2014/07/11 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle