我正在处理使用警告库抛出大量(对我来说)无用警告的代码。阅读(/扫描)文档时,我只找到了禁用单个函数警告的方法。但我不想更改这么多代码。

是否有类似python的标志-没有警告foo.py?

你会推荐什么?


当前回答

如果你不想要复杂的东西,那么:

import warnings
warnings.filterwarnings("ignore", category=FutureWarning)

其他回答


忽略警告的更像蟒蛇的方式


由于“warning.filterwarnings()”未抑制所有警告,我建议您使用以下方法:

import logging
    
for name in logging.Logger.manager.loggerDict.keys():
    logging.getLogger(name).setLevel(logging.CRITICAL)

#rest of the code starts here...

OR,

如果希望仅抑制一组特定的警告,则可以按如下方式进行过滤:

import logging
    
for name in logging.Logger.manager.loggerDict.keys():
    if ('boto' in name) or ('urllib3' in name) or ('s3transfer' in name) or ('boto3' in name) or ('botocore' in name) or ('nose' in name):
            logging.getLogger(name).setLevel(logging.CRITICAL)

#rest of the code starts here...

当所有其他操作都失败时,请使用以下选项:https://github.com/polvoazul/shutup

管道安装关闭

然后在代码顶部添加:

import shutup; shutup.please()

免责声明:我是该存储库的所有者。我在第五次需要它后写了它,但找不到任何简单的东西。

如果你不想要复杂的东西,那么:

import warnings
warnings.filterwarnings("ignore", category=FutureWarning)

这是一个老问题,但PEP 565中有一些新的指导,如果您正在编写python应用程序,请关闭所有警告:

import sys
import warnings

if not sys.warnoptions:
    warnings.simplefilter("ignore")

建议这样做的原因是,它默认关闭所有警告,但关键是允许通过命令行上的python-W或PYTHONWARNINGS重新打开警告。

import sys
if not sys.warnoptions:
    import warnings
    warnings.simplefilter("ignore")

在处理文件或添加新功能以重新启用警告时,将忽略更改为默认值。