出于调试/日志记录的目的,我想将完整堆栈写入文件(例如this question中)。我可以使用traceback.format_stack()
执行此操作。但是,我希望它看起来像IPython
输出的更详细的回溯,例如,使用IPython.core.ultratb.VerboseTB
进行格式化。
IPython.core.ultratb
中的类和方法似乎需要有关异常的信息,因为它们是为追溯而设计的。但我也不例外:我只想以冗长的方式显示堆栈。
如何使用IPython.core.ultratb.VerboseTB
的输出方法格式化堆栈,例如traceback.extract_stack()
或inspect.stack()
报告?
答案 0 :(得分:1)
import IPython.core.ultratb
import sys
try:
1/0
except Exception as exc:
tb = IPython.core.ultratb.VerboseTB()
print(tb.text(*sys.exc_info()))
# --------------------------------------------------------------------------
# ZeroDivisionError Traceback (most recent call last)
# <ipython-input-8-725405cc4e58> in <module>()
# 1 try:
# ----> 2 1/0
# 3 except Exception as exc:
# 4 tb = IPython.core.ultratb.VerboseTB()
# 5 print(tb.text(*sys.exc_info()))
#
# ZeroDivisionError: division by zero