【Python】在运行中使用warnings.filterwarnings,可以忽略测试中遇到的问题

在 Python 中,warnings 是一个内置模块,用于发出有关程序执行的警告信息,这些警告信息通常是关于程序行为的潜在问题。
不过,这些问题通常不是致命的错误,只不过是展示我们代码中潜在的问题,或不推荐的做法,但是不会影响到我们代码的运行。

以下是一些常见的警告类型

DeprecationWarning:当使用的功能已经被弃用,可能会在未来版本中移除时发出。FutureWarning:当使用的功能或行为在未来版本中会有所改变,但目前仍然有效时发出。ImportWarning:当模块导入过程中出现问题时,例如,当使用相对导入而包不是作为模块导入时。PendingDeprecationWarning:与 DeprecationWarning 类似,但用于那些在当前版本中仍然有效,但将在下一个版本中被弃用的功能。RuntimeWarning:当程序运行时发生某些行为可能会影响程序的正确性或性能时发出。SyntaxWarning:当 Python 语法使用方式可能不正确时发出,例如,当在语法上存在一些不推荐的做法时。UnicodeWarning:当处理 Unicode 字符串时出现问题,例如,当处理字符串时可能会丢失信息。BytesWarning:当字节和字符串之间的操作可能导致数据丢失或意外行为时发出。ResourceWarning:当程序可能没有正确管理资源,例如,当文件或网络连接没有被正确关闭时发出。UserWarning:这是一个通用的警告类别,用于发出用户定义的警告信息。EnvironmentError:当环境问题可能影响程序运行时发出,例如,当环境变量设置不当时。Warning:这是所有警告的基类,通常不会直接使用,但可以捕获所有类型的警告。

warnings 模块定义了多种警告类别,例如 DeprecationWarning、FutureWarning、RuntimeWarning 等,我们可以通过指定这些 类别 来发出特定类型的警告,也可以指定警告信息,以及可选地指定文件和行号。

简单测试:

import warningswarnings.warn("This is a warning message.")

返回的结果:
在这里插入图片描述如果我们要指定特定的警告,例如避免测试过程中,某个操作或函数调用可能对性能有负面影响,对服务器造成负担,可以使用警告来提醒:

import warnings
for data in range(10000):#如果想要测试这个方面,建议改数值再运行!if data > 1000:warnings.warn("Processing large data sets can lead to performance issues.")else:print(data)

在这里插入图片描述
如果我们正式运行的过程中,不想要警告报出(有时候确实挺烦的,实际上对运行没有影响但是确会报错),这时候可以通过 warnings.filterwarnings() 来设置过滤规则,决定哪些警告应该被显示或忽略。

使用warnings.filterwarnings函数可以控制警告消息的显示行为。这个函数允许你指定一个过滤规则,以决定哪些警告应该显示,哪些应该被忽略。以下是一些使用warnings.filterwarnings可能产生的效果:

  1. 忽略所有警告
    当你使用warnings.filterwarnings("ignore")时,程序中所有的警告消息都不会显示在控制台上。这在生产环境中很常见,以避免警告信息干扰日志记录或用户界面。

    import warnings
    warnings.filterwarnings("ignore")
    #把这段代码放在上面测试的代码上,原本的报错就不会发生
    
  2. 默认行为(只显示一次警告)
    如果不设置过滤规则,或者使用warnings.filterwarnings("once"),每个警告只会显示一次。这是为了避免重复显示相同的警告信息。

    warnings.filterwarnings("once")
    
  3. 总是显示警告
    使用warnings.filterwarnings("always")可以让每个警告在每次触发时都显示出来,不论它之前是否已经显示过。

    warnings.filterwarnings("always")
    
  4. 模块或类别特定的过滤
    你可以指定只忽略来自特定模块的警告,或者特定类型的警告(如弃用警告DeprecationWarning)。

    # 忽略特定模块的所有警告
    warnings.filterwarnings("ignore", module="numpy")# 忽略所有弃用警告
    warnings.filterwarnings("ignore", category=DeprecationWarning)
    
  5. 错误处理
    将警告当作错误处理,可以通过warnings.filterwarnings("error")实现。这意味着当触发警告时,程序将抛出一个异常。

    warnings.filterwarnings("error")
    
  6. 自定义过滤规则
    你可以定义自己的过滤函数,根据警告的消息、类别、发生的位置等信息来决定是否显示该警告。

    def my_filter(message, category, filename, lineno, line=None):# 根据需要自定义过滤逻辑return message == "Expected warning message"warnings.filterwarnings("ignore", filter=my_filter)
    

使用warnings.filterwarnings的效果取决于我们自己设置的过滤规则。合理使用这些规则,可以有效管理程序中的警告信息,避免无关紧要的警告干扰程序的正常运行,同时也能在需要时获取重要的警告信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/852484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件架构搞好了,还用担心代码可读性差?

目录 一、架构的概念及由来 二、小系统也需要架构思想 三、实现架构的思路 一、架构的概念及由来 嵌入式软件架构是指在嵌入式系统中用于组织和管理软件组件的结构和设计。嵌入式软件架构的出现是为了解决嵌入式系统中软件复杂度和系统要求不断增加的挑战。以下是嵌入式软件架…

【STM32进阶笔记】GPIO端口

前段时间由于其他原因,专栏暂停更新了较长一段时间,现在恢复更新,争取继续为大家创造有价值的内容,期待大家的订阅关注,欢迎互相学习交流。 在STM32速成笔记系列专栏中其实已经对GPIO的一些必要知识进行了介绍&#xf…

GPT4O给Qwen2生成的高考作文打分56分,从“小白”进阶技术大神的开发者基于国产GPU推理模型效果可还行?

OpenI启智社区上线的【芯动开源】首场活动-天数智芯挑战专场即将迎来最后一周的冲刺阶段,自2024年5月27日上线以来,这期间,我们见证了天数智芯通用GPU加速卡在适配AI模型方面的无限可能与开发者们开源精神的璀璨光辉。 在短短的两周时间里&a…

代码随想录算法训练营第二十三天|669. 修剪二叉搜索树、 108.将有序数组转换为二叉搜索树、 538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 题目链接:669. 修剪二叉搜索树 文档讲解:代码随想录 状态:还可以 思路: 如果节点的值在[low, high]之间,则递归修剪它的左子树和右子树。 节点值小于low:如果节点的值小于low&#xff…

智慧工厂自动装车解决方案:H13三维轮廓扫描激光雷达

激光雷达在智慧工厂自动装车的应用场景在智慧工厂的自动装车场景中,激光雷达的应用显得尤为关键。这种技术以其精确的测量和定位能力,助力自动化装车的每一个环节,大大提高了装车的效率和准确性。 首先,激光雷达在车辆定位方面发挥…

[next.js] svgr/webpack

nextjs如何配置svg文件,使其像react组件一样导入? 当前next.js 开发环境我使用了--turbo 来开启turbopack加速文件构建,所以之前的一些webpack loader之类的无法正常工作。通过搜索发现一般都是使用svgr/webpack来处理svg,打开svgr官网发现…

vscode 连接 GitHub

文章目录 连接 GitHub一、通过 SSH 连接 github二、通过 HTTPS 连接 github 连接 GitHub 在 vscode 中首次使用 git push 命令时会要求输入 github 账户的 username 和 password,这种基本身份验证在 2021.8.13 以前还是可以的,之后的话,就会…

Luma AI 推出梦幻机:据说吊打Sora和快手可灵(KLING)|TodayAI

近日,美国初创公司 Luma AI 宣布推出其最新的文本生成视频工具——梦幻机(Dream Machine)。这一消息发布的时间正好在中国科技公司快手推出其文本生成视频模型可灵(KLING)几天之后,标志着视频生成领域的又一…

Android Compose 十一:常用组件列表 compose自己个的 下拉刷新

列表下拉刷新 material3 还没有下拉刷新功能material:1.3.0 之后 swiperefresh 被弃用 被PullRefresh替代使用PullRefresh 需要添加依赖 implementation ‘androidx.compose.material:material:1.6.8’ 先上代码 var refreshing by remember {mutableStateOf(false)} val…

线性代数|机器学习-P12Ax=b条件下x最小值问题

文章目录 1. Axb下的最值问题-图形转换2. Gram-Schmidt 标准形3. 迭代法-Krylov子空间法 1. Axb下的最值问题-图形转换 假设我们有一个直线方程如下: 3 x 1 4 x 2 1 \begin{equation} 3x_14x_21 \end{equation} 3x1​4x2​1​​ 在二维平面上,各个范…

集成学习 #数据挖掘 #Python

集成学习是一种机器学习方法,它通过结合多个模型的预测结果来提高整体性能和稳定性。这种方法的主要思想是“集合智慧”,通过将多个模型(比如决策树、随机森林、梯度提升机等)的预测集成起来,可以减少单个模型的过拟合…

C# WPF入门学习主线篇(三十一)—— MVVM模式简介

C# WPF入门学习主线篇(三十一)—— MVVM模式简介 MVVM(Model-View-ViewModel)模式是WPF开发中的一种重要架构模式。它通过将用户界面(View)与业务逻辑和数据(Model)分离,…

【文献阅读】一种多波束阵列重构导航抗干扰算法

引言 针对导航信号在近地表的信号十分微弱、抗干扰能力差的问题,文章提出了自适应波束形成技术。 自适应波束形成技术可以分为调零抗干扰算法和多波束抗干扰算法。 调零抗干扰算法主要应用功率倒置技术,充分利用导航信号功率低于环境噪声功率的特点&…

三个pdf工具和浏览软件(pdftk,muppdf,epdfview)

安装pdftk pdftk是一款功能强大的PDF处理工具,主要用于对PDF文件进行各种操作。它提供了丰富的功能,包括但不限于合并、拆分、旋转、加密、解密、添加水印、从PDF文档中解出附件等。pdftk分为图形界面版本和命令行版本,适用于不同的用户需求…

使用ant-design/cssinjs向plasmo浏览器插件的内容脚本content中注入antd的ui组件样式

之前写过一篇文章用来向content内容脚本注入antd的ui:https://xiaoshen.blog.csdn.net/article/details/136418199,但是方法就是比较繁琐,需要将antd的样式拷贝出来,然后贴到一个单独的css样式文件中,然后引入到内容脚…

活动会议发布平台,让你我的距离再近点

随着科技、经济的不断发展,生活水平的不断提高,人们不仅在工作中追求快捷高效的工作工具,生活中对参加各项活动的热情也不断提升。活动会议发布平台以其便捷、高效的使用方式被越来越多人采用。 一. 活动会议发布平台的用户画像 …

博物馆藏品管理的重要性

博物馆是人们了解历史文化、传承文明的重要场所。而博物馆的藏品管理是博物馆的核心工作之一,对于展现博物馆的魅力、吸引观众的眼球有着至关重要的影响。并且博物馆藏品管理是一项复杂且专业的工作,它涉及到多个方面,包括但不限于藏品的收集…

租房项目之并发缺失数据问题

前奏:本项目是一个基于django的租房信息获取项目。本次博客牵扯到两个版本,集中式分布以及分布式部署(两个版本的ui不同,集中式用的是老版ui,分布式使用的是新版ui); 项目链接:http…

Linux2-系统自有服务防火墙与计划任务

一、什么是防火墙 防火墙主要用于防范网络攻击,防火墙一般分为软件防火墙、硬件防火墙 1、Windows中的防护墙设置 2、防火墙的作用 3、Linux中的防火墙分类 Centos6、Centos6>防火墙>iptables防火墙 防火墙系统管理工具 Centos7>防火墙>firewalld防火…

基于STM32的简易智能家居设计(嘉立创支持)

一、项目功能概述 1、OLED显示温湿度、空气质量,并可以设置报警阈值 2、设置4个继电器开关,分别控制灯、空调、开关、风扇 3、设计一个离线语音识别系统,可以语音控制打开指定开关、并且可以显示识别命令词到OLED屏上 4、OLED实时显示&#…