当前位置: 首页 > news >正文

python忽略warnings 的方法

      我在训练深度学习模型的时候一直出现这样的警告,但是不影响运行:

        UserWarning: Failed to load image Python extension: [WinError 127] 找不到指定的程序。
  warn(f"Failed to load image Python extension: {e}")  

        要避免在 Python 程序运行时显示类似的警告信息,可以使用 Python 内置的警告控制机制来抑制特定类型的警告。可以通过以下几种方法来抑制这类警告。

方法 1: 使用 warnings 模块过滤特定类型和消息内容的警告
        Python 的 warnings 模块允许控制警告的显示。在代码中添加以下内容,以抑制 UserWarning:

import warnings# 忽略指定的警告类型
warnings.filterwarnings("ignore", category=UserWarning, message="Failed to load image Python extension")# 其他代码...

        这样,只有与该特定消息匹配的 UserWarning 会被忽略,其他警告仍然会显示。 

方法 2: 使用 warnings 模块过滤特定类型的警告
        抑制所有的 UserWarning类型的警告,可以使用以下代码:

import warnings# 忽略所有 UserWarning 类型的警告
warnings.filterwarnings("ignore", category=UserWarning)# 其他代码...

        这样,只有 UserWarning 类型的警告会被忽略,其他警告仍然会显示。


方法 3: 使用 PYTHONWARNINGS 环境变量
        如果不想修改代码,可以通过设置环境变量 PYTHONWARNINGS 来抑制特定类型的警告。例如,在命令行或脚本运行时可以这样设置:

Linux/macOS
PYTHONWARNINGS=ignore::UserWarning python your_script.py
Windows
set PYTHONWARNINGS=ignore::UserWarning
python your_script.py


这种方式会全局抑制指定的警告类型,而不需要修改代码。

方法 4: 临时抑制所有警告(不推荐,但不显示任何警告信息)
如果想完全抑制所有警告,可以使用以下代码:

import warnings# 忽略所有警告
warnings.simplefilter("ignore")# 其他代码...


        注意:完全忽略所有警告,因为警告信息通常能帮助发现潜在的问题。最好是只抑制那些明确知道不会影响程序运行的警告。

方法 5: 控制过滤警告输出的其他设置方法:

import warningswarnings.simplefilter("default")  # 这是默认的警告过滤器设置,它会显示所有警告信息。
warnings.simplefilter("error")  # 这个设置会将所有警告转换为错误,这意味着如果代码触发了警告,Python解释器会抛出一个异常并停止执行。
warnings.simplefilter("always")  # 无论警告是在哪里产生的,这个设置都会显示警告信息。
warnings.simplefilter("module")  # 这个设置会在每个模块的第一条警告信息被显示后,忽略该模块后续的所有警告。
warnings.simplefilter("once")  # 这个设置会确保每个警告信息只被显示一次,即使在代码中多次触发了相同的警告。

方法 6: 通过日志库控制警告输出
        如果使用日志库(如 logging)来管理程序的日志输出,可以将警告信息重定向到日志系统,并根据需要决定是否记录或丢弃这些警告。以下是一个简单示例:

import logging
import warnings# 设置日志记录器
logging.captureWarnings(True)
logger = logging.getLogger("my_logger")
logger.setLevel(logging.ERROR)  # 只记录错误级别以上的日志# 创建一个处理器,比如输出到文件
file_handler = logging.FileHandler("my_log_file.log")
file_handler.setLevel(logging.ERROR)
logger.addHandler(file_handler)# 你的其他代码...# 这将会被记录到日志文件中,而不会在控制台显示
warnings.warn("This warning will be logged, but not sihown in the console.")


总结
        最推荐的方式是使用 warnings 模块来有选择地抑制特定类型的警告,比如仅抑制 UserWarning。这样可以避免看到不必要的警告信息,同时保留其他可能有用的警告。

http://www.lryc.cn/news/464873.html

相关文章:

  • 2024年底蓝奏云最新可用API接口列表 支持优享版 无需手动抓取cookie
  • Linux常用命令详细解析(含完整命令演示过程)
  • 《使用Gin框架构建分布式应用》阅读笔记:p101-p107
  • 014集——c#实现打开、另存对话框(CAD—C#二次开发入门)
  • 全面升级:亚马逊测评环境方案的最新趋势与实践
  • Java中的异步编程模型
  • opencv 按位操作
  • 【Bug】STM32串口空闲中断接收不定长数据异常
  • 使用Radzen Blazor组件库开发的基于ABP框架炫酷UI主题
  • Java入门4——输入输出+实用的函数
  • 《当尼采哭泣》
  • TOMCAT Using CATALINA——OPTS,闪退解决方法(两种)
  • Android音视频 MediaCodec框架-启动编码(4)
  • # Go 语言中的 Interface 和 Struct
  • SSM与Springboot是什么关系? -----区别与联系
  • MATLAB小波变换图像融合系统
  • nginx-安装和80端口映射多域名和ssl
  • SVN小乌龟 create patch 和 apply patch 功能
  • #MySQL `SELECT` 语句执行流程详解
  • docker容器运行一段时间提示Failed to initialize NVML: Unknown Error
  • PPT自动化:快速更换PPT图片(如何保留原图片样式等参数更换图片)
  • 秒懂MVC, MVP, MVVM框架
  • IDEA社区版如何用tomcat运行war包
  • 如何使用 Git Cherry-Pick 和 Reset 处理误提交,并确保安全回滚
  • Goland 搭建Gin脚手架
  • Java Spring的高级装配
  • 分布式光伏发电系统电气一次部分设计(开题报告2)
  • 【设计模式-迪米特法则】
  • Webpack安装
  • 前端开发学习(一)VUE框架概述