我正在处理使用警告库抛出大量(对我来说)无用警告的代码。阅读(/扫描)文档时,我只找到了禁用单个函数警告的方法。但我不想更改这么多代码。
是否有类似python的标志-没有警告foo.py?
你会推荐什么?
我正在处理使用警告库抛出大量(对我来说)无用警告的代码。阅读(/扫描)文档时,我只找到了禁用单个函数警告的方法。但我不想更改这么多代码。
是否有类似python的标志-没有警告foo.py?
你会推荐什么?
当前回答
查看Python文档的“临时抑制警告”部分:
如果您使用的代码已知会引发警告,例如已弃用的函数,但不希望看到警告,则可以使用catch_warnings上下文管理器抑制警告:导入警告def fxn():warnings.warn(“已弃用”,弃用警告)带有警告。catch_warnings():warnings.simplefilter(“忽略”)fxn()
我不宽恕它,但你可以这样压制所有警告:
import warnings
warnings.filterwarnings("ignore")
Ex:
>>> 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
其他回答
警告通过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)段仅解释了使用重定向和升级模块/依赖项的结果。
您还可以定义一个环境变量(2010年的新功能,即python 2.7)
export PYTHONWARNINGS="ignore"
这样的测试:默认
$ export PYTHONWARNINGS="default"
$ python
>>> import warnings
>>> warnings.warn('my warning')
__main__:1: UserWarning: my warning
>>>
忽略警告
$ export PYTHONWARNINGS="ignore"
$ python
>>> import warnings
>>> warnings.warn('my warning')
>>>
有关弃用警告,请查看如何忽略python中的弃用警告
复制到此处。。。
从警告模块的文档中:
#!/usr/bin/env python -W ignore::DeprecationWarning
如果您在Windows上:pass-W ignore::DeprecationWarning作为Python的参数。不过,最好通过向int转换来解决问题。
(注意,在Python 3.2中,默认情况下会忽略弃用警告。)
Or:
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=DeprecationWarning)
import md5, sha
yourcode()
现在,您仍然会收到所有其他DeprecationWarnings,但不会收到以下原因导致的警告:
import md5, sha
如果你不想要复杂的东西,那么:
import warnings
warnings.filterwarnings("ignore", category=FutureWarning)
查看Python文档的“临时抑制警告”部分:
如果您使用的代码已知会引发警告,例如已弃用的函数,但不希望看到警告,则可以使用catch_warnings上下文管理器抑制警告:导入警告def fxn():warnings.warn(“已弃用”,弃用警告)带有警告。catch_warnings():warnings.simplefilter(“忽略”)fxn()
我不宽恕它,但你可以这样压制所有警告:
import warnings
warnings.filterwarnings("ignore")
Ex:
>>> 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
有-W选项。
python -W ignore foo.py