任何在Python中保存回溯对象的方法

时间:2013-08-21 20:43:57

标签: python debugging save traceback

我当时希望尝试保存一个追溯对象,并以某种方式将其腌制到我可以访问的文件中。一个用例的例子是,如果我将一些python代码提交给一台农场计算机运行而且它失败了,那么能够打开一个会话并访问该回溯以调试问题而不仅仅是看到一个回溯的日志。我不知道是否有任何办法可以做到这一点,但认为如果不这样做,那就不值得问。

2 个答案:

答案 0 :(得分:1)

好的,你可以使用traceback.print_exception(type, value, traceback[, limit[, file]])并将其保存在文字或json中,或者你可以参考docs

如果你觉得它有用,请标记正确或upvote thanx ..:)

答案 1 :(得分:-1)

根据您编写代码的方式,try语句可能是您的最佳答案。由于任何错误只是一个继承Python内置Exception的类,因此您可以在需要有关抛出错误的更多信息的任何地方引发自定义错误。您只需要重命名错误或传入适当的字符串作为第一个参数。如果您然后try您的代码并使用except语句except CustomError as e,您可以将except语句中所需的所有信息作为常规实例提取出来。例如:

您的代码将是:

def script():
    try: codeblock
    except Exception as e: raise Error1('You hit %s error in the first block'% e)
    try: codeblock 2
    except Exception as e: raise Error2('You hit %s error in the second block' % e)

try: script()
except Exception as e:
    with open('path\to\file.txt','w') as outFile:
        outFile.write(e)

最后一部分只不过是创建自己的日志文件,但你必须把它写在某处,对吗?

至于使用上面提到的traceback模块,您可以从中获取错误信息。这里的任何命令都可以为您提供回溯列表: http://docs.python.org/2/library/traceback.html

另一方面,如果你试图避免查看日志文件,那么回溯模块只会以不同的格式给你一个日志文件。在代码中添加自己的错误语句可以提供比隐藏ValueError更多关于实际发生情况的信息。如果您将回溯打印到特殊错误,它可能会为您提供有关您的问题的更多信息。