警告的回溯信息
我有一段代码,在某个时候会显示一个警告,我觉得它在计算mean()
的时候出了问题。
我想知道有没有办法让Python告诉我具体是在哪一行出的问题,或者给我更多的信息,而不仅仅是这个警告信息:
C:\Python27\lib\site-packages\numpy\core\_methods.py:55: RuntimeWarning: Mean of empty slice.
warnings.warn("Mean of empty slice.", RuntimeWarning)
C:\Python27\lib\site-packages\numpy\core\_methods.py:79: RuntimeWarning: Degrees of freedom <= 0 for slice
warnings.warn("Degrees of freedom <= 0 for slice", RuntimeWarning)
我不知道是否可以“捕捉”到这个警告……如果我遇到错误,通常我会使用traceback这个包:
import traceback
然后我通常会这样做:
try:
#something
except:
print traceback.format_exc()
1 个回答
37
你可以把警告变成异常:
import warnings
warnings.simplefilter("error")
这样一来,程序就不会只是打印一个警告,而是会抛出一个异常,并给你一个错误追踪信息。
你也可以通过使用-W
这个命令行选项来达到同样的效果:
$ python -W error somescript.py
或者通过设置PYTHONWARNINGS
这个环境变量来实现:
$ export PYTHONWARNINGS=error
你还可以尝试其他warnings.simplefilter()
的参数,更具体地指定哪些警告应该抛出异常。比如,你可以根据warnings.RuntimeWarning
和某个行号来过滤。