如何禁用Python警告?

901 投票
14 回答
1959172 浏览
提问于 2025-04-17 13:21

我正在处理一些代码,这些代码会产生很多对我来说目前没什么用的警告,这些警告是通过warnings库生成的。我在阅读(或扫描)文档时,只找到了一种方法可以暂时关闭单个函数的警告。但我不想改动太多代码。

有没有类似于python -no-warning foo.py这样的选项呢?

你有什么建议吗?

14 个回答

210

别把事情搞得复杂,就在最上面加这两行代码。

import warnings
warnings.filterwarnings('ignore')
1145

看看Python文档中关于临时抑制警告的部分:

如果你在使用一些代码,这些代码会产生警告,比如说使用了不推荐的函数,但你又不想看到这些警告,那么可以使用catch_warnings这个上下文管理器来抑制警告:

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

# Or if you are using > Python 3.11:
with warnings.catch_warnings(action="ignore"):
    fxn()

我并不提倡这样做,但你可以用这个方法抑制所有警告

import warnings
warnings.filterwarnings("ignore")

举个例子:

>>> import warnings
>>> def f():
...     print('before')
...     warnings.warn('you are warned!')
...     print('after')
...
>>> f()
before
<stdin>:3: UserWarning: you are warned!
after
>>> warnings.filterwarnings("ignore")
>>> f()
before
after
687

这里有一个 -W 选项

python -W ignore foo.py

撰写回答