Python3无异常场景下如何修改代码将调用栈打印到指定文件
你的报错根源是*traceback.print_stack的file参数要求传入可写的文件对象,而非文件路径字符串*,字符串没有write方法才触发了AttributeError。
正确实现代码
import traceback # 你的目标文件路径 aValidFileNameAndPath = "./call_stack.log" # 推荐使用with上下文管理器,会自动完成文件关闭操作,避免资源泄漏 with open(aValidFileNameAndPath, mode="w", encoding="utf-8") as f: # 直接调用print_stack传入文件对象即可,无异常场景也能正常打印当前调用栈 traceback.print_stack(file=f)
补充说明
- 如果需要把调用栈追加到文件末尾而非覆盖原有内容,把
open的mode参数从w改成a即可 - 如果需要限制打印的调用栈层数,可添加
limit参数:traceback.print_stack(file=f, limit=10)表示仅打印最近10层调用 - 该方法本身就是为无异常场景下打印当前调用栈设计的,完全满足你的需求,不需要依赖异常触发逻辑。
内容的提问来源于stack exchange,提问作者CodeMed
相关产品推荐
相关产品推荐

