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

是否有类似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...

警告通过stderr输出,简单的解决方案是将'2>/dev/null'附加到CLI。这对许多用户来说非常有意义,比如那些使用centos6的用户,他们被python2.6依赖(如yum)所困扰,并且各种模块的覆盖范围都被推到了灭绝的边缘。

这对于涉及SNI等的密码学尤其如此。可以使用以下proc更新2.6以进行HTTPS处理:https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2型

警告仍然存在,但您所需的一切都是后端口的。stderr的重定向将为您留下干净的终端/shell输出,尽管stdout内容本身不会改变。

响应FriendFX。第一(1)句用普遍的解决方案直接回应了这个问题。第二(2)句考虑了所引用的锚重新“禁用警告”,这是python 2.6特有的,并注意到RHEL/centos 6用户不能直接使用2.6。尽管没有引用任何具体警告,但第二(2)段回答了我最常遇到的2.6个问题:密码模块中的缺陷,以及如何“现代化”(即升级、反向端口、修复)python的HTTPS/TLS性能。第三(3)段仅解释了使用重定向和升级模块/依赖项的结果。

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

管道安装关闭

然后在代码顶部添加:

import shutup; shutup.please()

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

不要让它变得复杂,只需使用这两行

import warnings
warnings.filterwarnings('ignore')

有-W选项。

python -W ignore foo.py