Python警告控制

4
1个回答

7

查看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')

有没有办法在几个相似的警告之后将警告静音?我的意思是在出现相同数量的警告后。 - L1ker
L1ker,请参阅http://docs.python.org/2/library/warnings.html#the-warnings-filter。您可以在引发警告之前的某个地方调用`warnings.filterwarnings(“once”)`。但是,无法以固定次数显示相同的警告,正如您所要求的那样。 - j08lue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接