首页 > 解决方案 > 有没有办法查看哪一行代码在 python 中产生警告消息?

问题描述

Python 经常抛出警告消息,尤其是在使用 pandas 时。但没有显示线参考。为什么会这样,有没有办法获得这些信息?

标签: pythonwarnings

解决方案


对于不是熊猫特定的更通用的解决方案,您可以覆盖formatwarning方法:

警告信息的打印是通过调用 showwarning() 来完成的,它可以被覆盖;此函数的默认实现通过调用 formatwarning() 来格式化消息,这也可供自定义实现使用。

所以它看起来像下面这样:

import warnings

def my_formatwarning(message, category, filename, lineno, line=None):
  print(message, category)
  # lineno is the line number you are looking for
  print('file:', filename, 'line number:', lineno) 
  ...

warnings.formatwarning = my_formatwarning

对于问题的为什么部分,我不确定答案是什么,我想这样可以使日志保持清洁?


推荐阅读