如何禁用Python警告?
我正在处理一些代码,这些代码会产生很多对我来说目前没什么用的警告,这些警告是通过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