3

我想找到一种方法来记录每个强制 python 解释器退出以保存到文件以及打印到屏幕上的错误。我想这样做的原因是我想记录我在编写代码时犯的错误类型,着眼于寻找方法来避免我将来经常犯的错误。

我一直在尝试通过使用 subprocess 模块为 python 解释器编写一个包装器来做到这一点。基本上,它运行 python 解释器,捕获任何输出,解析并将其保存到文件中,打印输出,并使用 matplotlib 制作一些摘要图。但是,我在从包装脚本实时获取输出时遇到问题。例如,如果我正在运行的脚本是:

import os  
import time

for x in range(10):  
    print "testing"  
    time.sleep(10)  

我将 subprocess.Popen() 与 p.communicate() 一起使用,包装器将等待 100 秒,然后打印所有输出。我希望包装器尽可能不可见 - 理想情况下,它会每十秒打印一次“测试”。

如果有人能指出我这样做的好方法,我将不胜感激。

谢谢!

4

1 回答 1

6

我相信你可以简单地sys.excepthook用你自己的函数替换。您可以在Python 文档中了解它。

基本上,它允许您自定义当异常渗透到强制 Python 解释器退出时发生的情况。你像这样使用它:

import sys

def my_excepthook(type, value, tb):
    # you can log the exception to a file here
    print 'In My Exception Handler'

    # the following line does the default (prints it to err)
    sys.__excepthook__(type, value, tb)

sys.excepthook = my_excepthook

您可能还想查看traceback 模块,以格式化您获得的回溯。

于 2011-02-09T05:46:04.233 回答