cod*_*ler 14 python warnings traceback
我有一个代码,在某些时候显示警告,我认为它有一个问题计算 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)
Run Code Online (Sandbox Code Playgroud)
我不知道是否有可能"抓住"警告.....如果我有任何错误,通常我使用的是追溯包:
import traceback
然后我通常做:
try:
#something
except:
print traceback.format_exc()
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 34
您可以将警告变为例外:
import warnings
warnings.simplefilter("error")
Run Code Online (Sandbox Code Playgroud)
现在不会打印警告,而是会引发异常,为您提供追溯.
您可以使用-W命令行开关获得相同的效果:
$ python -W error somescript.py
Run Code Online (Sandbox Code Playgroud)
或者通过设置PYTHONWARNINGS环境变量:
$ export PYTHONWARNINGS=error
Run Code Online (Sandbox Code Playgroud)
您可以使用其他warnings.simplefilter()参数来更具体地说明应该引发异常的警告.例如,您可以过滤warnings.RuntimeWarning和行号.