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

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

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

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

怎么办?

显然,警告(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. 论文翻译:LP-3DCNN: Unveiling Local Phase in 3D Convolutional Neural Networks

    引言 传统的3D卷积神经网络(CNN)计算成本高,内存密集,容易过度拟合,最重要的是,需要改进其特征学习能力.为了解决这些问题,我们提出了整流局部相位体积(ReLPV)模块,它是标准3D卷积层的有效替 ...

  2. 汉诺塔问题的C++实现

    有三根杆子A,B,C.A杆上有N个(N>1)穿孔圆环,盘的尺寸由下到上依次变小.要求按下列规则将所有圆盘移至C杆:每次只能移动一个圆盘:大盘不能叠在小盘上面.如何移?最少要移动多少次? 原理可参 ...

  3. eclipse 导入项目出现的问题汇总

    Unbound classpath variable: 'TOMCAT_HOME' in project XXX Problem 翻译:未绑定的类路径变量:项目XXX中的“TOMCAT_HOME” 解 ...

  4. 【神经网络与深度学习】如何在Caffe中配置每一个层的结构

    如何在Caffe中配置每一个层的结构 最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结. 1. Vision ...

  5. ajax提交表单包含文件

    需要用到  FormData. html: <form id="formPost"> name: <input name="name" /&g ...

  6. 【GO】一个容易踩坑的内外变量屏蔽问题

    package main import ( "errors" "fmt" ) func et()(string,error){ return "&qu ...

  7. XML JS Demo

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  8. 统计学习方法 | 第3章 k邻近法 | 补充

    namedtuple 不必再通过索引值进行访问,你可以把它看做一个字典通过名字进行访问,只不过其中的值是不能改变的. sorted()适用于任何可迭代容器,list.sort()仅支持list(本身就 ...

  9. XXE漏洞简析

    0x00.什么是XXE? XML外部实体注入(XML External Entity Injection) XML基础 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型. ...

  10. python-day39(正式学习)

    目录 线程锁 死锁问题及递归锁 死锁 递归锁 信号量 GIL全局解释器锁 线程锁 from threading import Thread,Lock x=0 lock=Lock() def test( ...