【问题标题】:traceback from a warning从警告回溯
【发布时间】:2014-07-01 14:38:35
【问题描述】:

我有一个代码,在某些时候会显示警告,我认为它在计算 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()

【问题讨论】:

标签: python warnings traceback


【解决方案1】:

您可以将警告变成异常:

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 和行号。

【讨论】:

  • 前 2 个选项的优缺点是什么?第三个似乎更极端
  • @MikePalmice:所有 3 个选项都具有完全相同的效果,它们只是向 Python 二进制文件发送信号以更改过滤器设置的不同方式。
猜你喜欢
  • 2020-03-07
  • 2020-05-20
  • 2021-01-11
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 2021-12-28
  • 2018-07-07
  • 2016-08-14
相关资源
最近更新 更多