我正在改写这个问题,因为我最初的问题似乎有些问题,而且太模糊了。
我正在尝试为 sys.excepthook 构建一个替换函数,以便在运行批处理作业时将错误保存到文件中。我已经引用了几个来源,并且特别难以将回溯打印到文件中。以下是对我有用的东西。
import sys
import traceback
def saveError(exctype, value, tb):
filename = tb.tb_frame.f_code.co_filename
name = tb.tb_frame.f_code.co_name
line_no = tb.tb_linno
with open('filepath.txt','w', newline = '') as f:
f.write(f"{filename}")
f.write(f"{name}")
f.write(f"{line_no}")
f.write(f"{exctype.__name__}")
f.write(f"{value}")
f.close()
sys.excepthook = saveError
print(1/0)
我遇到的问题是试图打印完整的回溯,你可以在上面看到我已经取出了它的各个部分,但还没有得到完整的东西。我在下面尝试过的一些例子。
import traceback
trace = f"{traceback.format_exc()}"
返回 NoneType: None
f.write(f"{tb}")
返回
trace2 = traceback.format_tb(tb)
这似乎什么都没有返回
有没有办法将traceback信息转化为字符串格式保存到文件中?
回溯对象没有这些方法。你需要
import traceback
然后traceback.print_exc(...)
等