如何在保留所有其他警告的情况下,消除Python中特定的警告信息?

2024-05-14 09:26:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在一个python脚本中隐性地做一些简单的数学运算,得到以下警告:

"Warning: divide by zero encountered in divide".

为了提供一些上下文,我取了两个值,并试图找出值(a - b) / a中的百分比差异,如果它高于某个范围,则对其进行处理,但有时ab的值为零。

我想摆脱这个特定的警告(在特定的行),但我目前发现的所有信息似乎都在告诉我如何停止所有警告(我不想)。

当我以前写shell脚本时,我可以这样做

code...
more code 2 > error.txt
even more code  

在那个例子中,我会得到“code”和“ever more code”命令的警告,但不会得到第二行的警告。

这可能吗?


Tags: in脚本信息警告bymorecode数学
2条回答

首先我要避免被零除:

if a == 0:
    # Break out early

# Otherwise the ratio makes sense

如果您确实想在一行上压缩特定的numpy警告,numpy将提供a way

with numpy.errstate(divide='ignore'):
    # The problematic line

如果Scipy正在使用warnings模块,则可以禁止显示特定警告。在程序开始时尝试此操作:

import warnings
warnings.filterwarnings("ignore", message="divide by zero encountered in divide")

如果希望此操作仅应用于一段代码,请使用警告上下文管理器:

import warnings
with warnings.catch_warnings():
    warnings.filterwarnings("ignore", message="divide by zero encountered in divide")
    # .. your divide-by-zero code ..

相关问题 更多 >

    热门问题