计算机程序有时很人性化,比如给你警告提示信息;

计算机程序有时又非常不人性化,比如动不动就给你警告提示......

如果你的程序是要给客户使用,有运行美化要求;

再尤其是比如警告出现在循环里的情况,那么每次循环都要打印出一堆警告信息......那就十分扯淡了。

怎么办?

显然,警告(Warning)并不是错误(Error),程序并不会因警告的出现而中止运行。

那些原始开发者一定早已考虑到这一点,设置了可供调整的警告输出模式。

我们以Python和R为例,看看基本的警告信息管理操作。

(一)Python

我们编写以下程序:

import warnings as w
if 1==1:
w.warn('警告!!!')

运行结果为:

Warning (from warnings module):
File "D:/warnings.py", line 3
w.warn('警告!!!')
UserWarning: 警告!!!

1)当使用命令行模式执行程序时,可在执行命令里加入-W ignore:

python -W ignore XXX.py

此时运行结果不输出警告。

2)也可在程序中导入warnings模块,使用警告过滤器。

import warnings as w
w.filterwarnings("ignore")
if 1==1:
w.warn('警告!!!')

此时运行结果也不输出警告。

而事实上,还有其它几个参数可供选择以控制警告:

Value

Disposition

"error"

turn matching warnings into exceptions

"ignore"

never print matching warnings

"always"

always print matching warnings

"default"

print the first occurrence of matching warnings for each location where the warning is issued

"module"

print the first occurrence of matching warnings for each module where the warning is issued

"once"

print only the first occurrence of matching warnings, regardless of location

如将程序改为:

import warnings as w
w.filterwarnings("ignore")
if 1==1:
w.warn('警告!!!')
w.filterwarnings("always")
if 1==1:
w.warn('警告!!!---')
w.filterwarnings("error")
if 1==1:
w.warn('警告!!!---===')
print('sfsdfsfsdfsdf')

输出结果:

Warning (from warnings module):
File "D:/warnings.py", line 7
w.warn('警告!!!---')
UserWarning: 警告!!!---
Traceback (most recent call last):
File "D:/warnings.py", line 10, in <module>
w.warn('警告!!!---===')
UserWarning: 警告!!!---===

(二)R

R语言控制警告就更方便了。可在程序前插入命令:

options(warn=N)

其中,N的取值可以为负数、0、1、2。

warn = 负数,则所有warning message都被忽略。
warn = 0 (默认值),则所有warning messages会被储存起来直到上级函数运行结束。
warn = 1,则一旦产生warning message,这条信息会被立即显示出来。
warn = 2 或更大的数值, 则warning message会被立即显示并转换成error message。

参考资料:

https://docs.python.org/2/library/warnings.html#temporarily-suppressing-warnings

https://blog.csdn.net/xiaodongxiexie/article/details/65646239

https://blog.csdn.net/stat_elliott/article/details/37878247

Python&R:警告信息管理的更多相关文章

  1. VS code 配置为 Python R LaTeX IDE

    VS code配置为Python R LaTeX IDE VS code的中文断行.编辑功能强大,配置简单. VSC的扩展在应用商店搜索安装,快捷键ctrl+shift+x调出应用商店. 安装扩展后, ...

  2. 配置 Sublime Text 3 作为Python R LaTeX Markdown IDE

    配置 Sublime Text 3 作为Python R LaTeX Markdown IDE 配置 Sublime Text 3 作为Python IDE IDE的基本功能:代码提醒.补全:编译文件 ...

  3. 机器学习算法 Python&R 速查表

    sklearn实战-乳腺癌细胞数据挖掘( 博主亲自录制) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  4. ubuntu 执行Python脚本出现: /usr/bin/env: ‘python\r’: No such file or directory

    原因: #!/usr/bin/env python 在ubuntu会变成 #!/usr/bin/env python\r 而\r 会被shell 当成参数 所以出现:  /usr/bin/env: ‘ ...

  5. 建模分析之机器学习算法(附python&R代码)

    0序 随着移动互联和大数据的拓展越发觉得算法以及模型在设计和开发中的重要性.不管是现在接触比较多的安全产品还是大互联网公司经常提到的人工智能产品(甚至人类2045的的智能拐点时代).都基于算法及建模来 ...

  6. python '%r'或者'{!r}'的意思

    转载:https://blog.csdn.net/a19990412/article/details/80149112 这两个都是python的转译字符, 类似于%r, %d,%f >>& ...

  7. Python&R&量化 金融之路

    [ 分类 ]- 金融之路 - 闲云孤鹤(人生在世五十年,大千世界一瞬间,浮生若梦,仿佛间,幻境一场,生者无常,终须尽.) - CSDN博客 https://blog.csdn.net/robertso ...

  8. 去掉python的警告

    1.常规警告 import warnings warnings.filterwarnings("ignore") 2.安装gensim,在python中导入的时候出现一个警告: w ...

  9. kNN算法及其python&R实现

    iris数据集,这一教科书级别的数据,分类前不需要做任何数据预处理什么的,相当的理想!但请注意你自己的数据99%的可能需要做预处理. 下面分别用R语言和Python来实现iris数据集的分类: R语言 ...

随机推荐

  1. java 常用jar包方法

    1.Mapper3   常用接口 https://blog.csdn.net/fangwenzheng88/article/details/78713091 2.分页 pageHelper

  2. RFC3550中文

    RTP:实时应用程序传输协议   摘要 本文描述RTP(real-time transport protocol),实时传输协议.RTP在多点传送(多播)或单点传送(单播)的网络服务上,提供端对端的网 ...

  3. Laravel策略(Policy)示例

    场景:当前用户创建的订单,只能当前用户自己看,可以通过授权策略类(Policy)来实现 1.php artisan make:policy OrderPolicy 成功后,默认只有一个构造方法.因为涉 ...

  4. CreateThread()使用实例

    1.定义的全局变量 DWORD WINAPI ClientThread(LPVOID lpParam); struct ClientInfo {   SOCKET sock;   SOCKADDR_I ...

  5. 【洛谷P1816】忠诚——ST表做法

    看了两个小时RMQ并位运算,对二进制勉勉强强有了个初步了解,不能说精通(可能今年CSP前都做不到精通),但是记熟板子做做题还是没有问题的 以下是正式题解,相信你看过了题目,我介绍的是ST表的做法(很简 ...

  6. Codeforces 817+818(A~C)

    (点击题目即可查看原题) 817A Treasure Hunt 题意:给出起点和终点,每次移动只能从 (a,b)移动至(a+x,b+y) , (a+x,b-y) , (a-x,b+y) , (a-x, ...

  7. 使用curl访问https

    在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具.然而在使用cr ...

  8. 稀疏矩阵三元组快速转置(转poklau123写的很清楚)

    关于稀疏矩阵的快速转置法,首先得明白其是通过对三元表进行转置.如果误以为是对矩阵进行转置,毫无疑问就算你想破脑袋也想不出个所以然,别陷入死胡同了! 对于一个三元表,行为i,列为j,值为v.需将其i与j ...

  9. O019、通过例子学习 Keystone

    参考https://www.cnblogs.com/CloudMan6/p/5373311.html   上节介绍了 Keystone 的核心概念.本节我们通过“查询可用 image”这个操作让大家对 ...

  10. Ubuntu - 14.04下,GO语言的安装!

    一,下载GO语言的安装文件,我直接下载GO语言的安装包(64位),并不是源码: 下载地址: 64位:https://storage.googleapis.com/golang/go1.6.linux- ...