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

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

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

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

怎么办?

显然,警告(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. 【VS开发】进程线程及堆栈关系的总结

    进程线程及堆栈关系的总结 突然想到进程的栈和线程的栈,就顺便说一下,线程的栈被自动分配到进程的内存空间中 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性. ...

  2. 【Linux开发】linux设备驱动归纳总结(六):3.中断的上半部和下半部——工作队列

    linux设备驱动归纳总结(六):3.中断的上半部和下半部--工作队列 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  3. Object的构造函数方法

    参考自MDN Object 构造函数的方法 1.Object.assign() 将可枚举属性的值从一个或多个源对象复制到目标对象. 2.Object.create() 创建一个新对象,继承现有对象的构 ...

  4. java内存模型的实现

    前几天,发了一篇文章,介绍了一下JVM内存结构.Java内存模型以及Java对象模型之间的区别.其中,Java内存模型,是这三个知识点当中最晦涩难懂的一个,而且涉及到很多背景知识和相关知识. 网上有很 ...

  5. Angular build编译内存溢出"JavaScript heap out of memory"的解决办法

    关于最近使用angular build编译打包的时候,遇到内存溢出的突发情况,做一个简单记录 编译报错如下↓↓↓ 报错信息很直观地指出是内存溢出了.是什么导致了内存溢出呢?其根本原因在于 nodejs ...

  6. win10任务切换变卡

    问题:更新之前没有任何问题,用alt+tab是秒切,更新后切换任务后会黑屏一两秒然后才转到切换页面 解决方法:关闭服务“system interface foundation service”

  7. 西安邀请赛-L(打表找规律)

    题目链接:https://nanti.jisuanke.com/t/39279 题意:给定n个不同的数表示的序列,定义两种操作:1. 交换前一半和后一半(如果有奇数个,则中间的不管).2. 交换每个偶 ...

  8. spring笔记3路径跳转

    ---恢复内容开始--- 页面跳转 <!--forward直接跳转--><jsp:forward page="pages/admin/member/add_pre.acti ...

  9. Robot Framework-失败用例自动重跑

    使用自动化脚本进行测试,经常受环境影响等各方面导致本能成功的脚本失败,下面介绍了RFS框架下,失败重跑的方法: 通过改写RobotFramework源代码增加–retry选项,实现test级别的失败用 ...

  10. StandardWrapper

    Tomcat中有四种类型的Servlet容器,分别是 Engine.Host.Context.Wrapper,每个Wrapper实例表示一个具体的Servlet定义,StandardWrapper就是 ...