>> war-6ren">
gpt4 book ai didi

python - 在警告被抑制后控制警告的出现

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:26 24 4
gpt4 key购买 nike

考虑一下:

>>> import warnings
>>> warnings.filterwarnings("always", category=DeprecationWarning)
>>> warnings.warn("Hello", DeprecationWarning)
/usr/bin/bpython:2: DeprecationWarning: Hello

好的,那里有一个警告。

>>> warnings.filterwarnings("ignore", category=DeprecationWarning)
>>> warnings.warn("Silence", DeprecationWarning)

这里没有警告。

>>> warnings.filterwarnings("always", category=DeprecationWarning)
>>> warnings.warn("Silence", DeprecationWarning) # why remain silent?
>>>

此处没有警告,但应该是我所见的警告。如果您删除 python 2 和 3 上的“忽略”过滤器,也会发生同样的情况。

虽然原则上这应该不是问题(除非有其他原因),但我在不知不觉中在某处创建了此静音警告。这使得很难确定警告是否在给定的警告上下文中得到控制。

注意:在脚本中这个例子工作正常。但是我原来的问题可能只是类似于这个例子,所以我怀疑它只限于交互式提示。在最初的问题中,我没有看到任何警告,即使 warnings.filters 中的第一个过滤器应该将其与“始终”匹配(我检查过)。

最佳答案

好的,所以我想这个特定问题实际上已由 bug report 回答了.不幸的是,这似乎并不是我的问题,但那是另一回事......

万一有人感兴趣...我最初的问题仅仅是因为忘记了 warnings.filters 使用正则表达式 re.match 并且需要开始要匹配的字符串。

在测试 function 的弃用警告时避免此问题

if hasattr(function, '__globals__'):
if function.__globals__.has_key('__warningregistry__'):
function.__globals__['__warningregistry__'].clear()

这至少对我有帮助。 (在测试另一个警告时忽略了一个警告,然后在测试第一个忽略的警告期间触发了此问题)

关于python - 在警告被抑制后控制警告的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com