Python的warnings模块用于发出非致命警告,不能用try/except捕获;需用filterwarnings、simplefilter忽略,catch_warnings(record=True)临时捕获,或通过-W参数及PYTHONWARNINGS环境变量控制。

Python的warnings模块用于发出非致命警告信息,比如弃用提醒、可疑写法提示等。它不中断程序执行,但默认会把警告打印到标准错误输出——这在测试、部署或日志分析中常需控制:有时要忽略掉干扰项,有时要捕获并做处理。
为什么不能用try/except捕获警告?
警告不是异常,不会触发except分支。直接写except Warning:是无效的。必须通过warnings模块的机制来管理。
忽略特定警告(简单实用)
用warnings.filterwarnings()或warnings.simplefilter()可全局屏蔽某类警告:
-
warnings.filterwarnings("ignore", category=DeprecationWarning)—— 忽略所有弃用警告 -
warnings.filterwarnings("ignore", message=".*pide by zero.*", category=RuntimeWarning)—— 按正则匹配忽略特定提示 -
warnings.simplefilter("ignore", UserWarning)—— 简洁写法,忽略全部UserWarning
注意:过滤规则按注册顺序匹配,越靠前的越优先;建议在脚本开头或模块导入后立即设置。
立即学习“Python免费学习笔记(深入)”;
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~