我有一个代码,在某些时候显示警告,我认为它在计算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)
我不知道是否有可能“抓住”警告.....如果我有任何错误,通常我会使用追溯包:
import traceback
然后我通常会这样做:
try:
#something
except:
print traceback.format_exc()
答案 0 :(得分:34)
您可以将警告变为例外:
import warnings
warnings.simplefilter("error")
现在不会打印警告,而是会引发异常,为您提供追溯。
您可以使用-W
command line switch获得相同的效果:
$ python -W error somescript.py
或设置PYTHONWARNINGS
environment variable:
$ export PYTHONWARNINGS=error
您可以与其他warnings.simplefilter()
arguments一起使用,以更具体地说明应该引发异常的警告。例如,您可以对warnings.RuntimeWarning
和行号进行过滤。