【发布时间】:2009-09-11 18:31:45
【问题描述】:
我希望将某种警告作为错误引发,但只在第一次出现。该怎么做?
我阅读了http://docs.python.org/library/warnings.html,但我不知道如何将这两种行为结合起来。
【问题讨论】:
我希望将某种警告作为错误引发,但只在第一次出现。该怎么做?
我阅读了http://docs.python.org/library/warnings.html,但我不知道如何将这两种行为结合起来。
【问题讨论】:
查看warnings.py 的代码,您不能为警告分配多个过滤器操作,也不能(轻松)定义自己的操作,例如“raise_once”。
但是,如果您想将警告作为异常发出,但只发出一次,这意味着您正在捕获异常。为什么不在您的 except 子句中添加一行,对特定警告设置“忽略”操作?
#!/usr/bin/python
import warnings
warnings.filterwarnings('error','Test')
for i in range(2):
try:
warnings.warn('Test');
except UserWarning, e:
print "Error caught"
warnings.filterwarnings('ignore','Test')
【讨论】:
warnings.filterwarnings("once")。但是,按照您的要求,无法多次显示相同的警告,而是显示固定的次数。