下面是一个通过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()
获取它可以让你随心所欲地使用它.