有没有办法查看哪一行代码在 python 中产生警告消息?

Posted

技术标签:

【中文标题】有没有办法查看哪一行代码在 python 中产生警告消息?【英文标题】:Is there a way to see which line of code produces warning message in python? 【发布时间】:2020-11-21 01:48:30 【问题描述】:

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

【问题讨论】:

这能回答你的问题吗? How to find the line that is generating a Pandas SettingWithCopyWarning? 【参考方案1】:

对于不是 pandas 特定的更通用的解决方案,您可以覆盖 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

对于问题的部分原因,我不确定答案是什么,我想是为了让日志保持清洁?

【讨论】:

以上是关于有没有办法查看哪一行代码在 python 中产生警告消息?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法确定 JS 代码的哪一部分最耗电?

查看哪种样式的样式表应用于特定元素

myeclipse 使用svn控制 如何查看类的 哪一行 被修改过

有没有办法在 Python 函数的每一行上装饰/执行操作?

有没有办法在 python 中运行 C# 的不和谐 SDK 代码?

GML:有没有一种简单的方法可以查看一行代码的输出?