在Python中,如何从方法中打印当前调用堆栈(用于调试目的).

推荐答案

下面是一个通过traceback模块获取堆栈并打印的示例:

import traceback

def f():
    g()

def g():
    for line in traceback.format_stack():
        print(line.strip())

f()

# Prints:
# File "so-stack.py", line 10, in <module>
#     f()
# File "so-stack.py", line 4, in f
#     g()
# File "so-stack.py", line 7, in g
#     for line in traceback.format_stack():

如果确实只想将堆栈打印到stderr,可以使用:

traceback.print_stack()

或者,要打印到标准输出(如果希望保留重定向的输出,则非常有用),请使用:

traceback.print_stack(file=sys.stdout)

但是通过traceback.format_stack()获取它可以让你随心所欲地使用它.

Python相关问答推荐

难以在Manim中正确定位对象

如何使用html从excel中提取条件格式规则列表?

将图像拖到另一个图像

Mistral模型为不同的输入文本生成相同的嵌入

PyQt5,如何使每个对象的 colored颜色 不同?'

实现自定义QWidgets作为QTimeEdit的弹出窗口

为一个组的每个子组绘制,

Pandas Loc Select 到NaN和值列表

Polars将相同的自定义函数应用于组中的多个列,

导入错误:无法导入名称';操作';

在Python中从嵌套的for循环中获取插值

Pandas—MultiIndex Resample—我不想丢失其他索引的信息´

在Django中重命名我的表后,旧表中的项目不会被移动或删除

如何为需要初始化的具体类实现依赖反转和接口分离?

Pandas数据框上的滚动平均值,其中平均值的中心基于另一数据框的时间

当我定义一个继承的类时,我可以避免使用`metaclass=`吗?

Python:从目录内的文件导入目录

上传文件并使用Panda打开时的Flask 问题

PYTHON中的selenium不会打开 chromium URL

利用广播使减法更有效率