我想记录Python脚本的所有输出.我试过了:
import sys
log = []
class writer(object):
def write(self, data):
log.append(data)
sys.stdout = writer()
sys.stderr = writer()
Run Code Online (Sandbox Code Playgroud)
现在,如果我"打印'某些东西'"它就会被记录下来.但是,如果我做了一些语法错误,比如说"打印'某些东西#",它就不会被记录 - 它将进入控制台.
我如何捕获Python解释器中的错误?
我看到了一个可能的解决方案:
http://www.velocityreviews.com/forums/showpost.php?p=1868822&postcount=3
但第二个例子登录到/ dev/null - 这不是我想要的.我想将它记录到像我上面的例子或StringIO这样的列表中......
另外,我最好不要创建子进程(并在单独的线程中读取它的stdout和stderr).