如何在stthon中将std.error写入文件,但将std.out写入控制台?

eag*_*arn 1 python exception try-catch stderr

在这个例子中,我想 write在控制台(std.out)try block; 但是当抛出异常时except block,我想编写std.err重定向到日志的异常内容file.

我可以file打开一个except块然后write打开它.但是需要为每个try-catch块完成,所以如果有re-directing这些异常的替代方法std.err并记录std.error.

>>> try:
...   print "hello world"
...   1/0
... except ZeroDivisionError as e:
...   print "exception"
... 
hello world
exception
Run Code Online (Sandbox Code Playgroud)

Max*_*oel 5

绝对可能:

import sys
sys.stderr = open("/tmp/errors.txt", "w")
Run Code Online (Sandbox Code Playgroud)

以下所有打印到stderr将转到该文件.

你可能应该在shell级别而不是在Python级别这样做 - 它更灵活.