我想将Python脚本的标准错误和标准输出重定向到同一个输出文件。从终端中,我可以使用以下命令:
为了完成我想要的同样的任务,但需要从Python脚本本身完成。我查看了这些问题:将子进程的stderr重定向到stdout、如何重定向Python中的stderr?以及这里的示例10.10,然后我尝试了以下内容:
我在终端中收到了“SyntaxError …”的错误提示,但在out.txt文件中没有收到。我该怎么做才能将SyntaxError发送到out.txt文件中呢?我不想写一个异常处理,因为那样会在脚本中写入太多的异常。我正在使用Python 2.7。
更新:如下面的答案和评论所指出的,SyntaxError将始终输出到屏幕上,我将以下一行代码替换为:
"
$ python myfile.py &> out.txt
为了完成我想要的同样的任务,但需要从Python脚本本身完成。我查看了这些问题:将子进程的stderr重定向到stdout、如何重定向Python中的stderr?以及这里的示例10.10,然后我尝试了以下内容:
import sys
fsock = open('out.txt', 'w')
sys.stdout = sys.stderr = fsock
print "a"
正确地将字母“a”打印到out.txt文件中;然而,当我尝试以下操作时:
import sys
fsock = open('out.txt', 'w')
sys.stdout = sys.stderr = fsock
print "a # missing end quote, will give error
我在终端中收到了“SyntaxError …”的错误提示,但在out.txt文件中没有收到。我该怎么做才能将SyntaxError发送到out.txt文件中呢?我不想写一个异常处理,因为那样会在脚本中写入太多的异常。我正在使用Python 2.7。
更新:如下面的答案和评论所指出的,SyntaxError将始终输出到屏幕上,我将以下一行代码替换为:
print "a # missing end quote, will give error
by
print 1/0 # Zero division error
"
ZeroDivisionError被输出到文件中,因为我希望在我的问题中有这个错误。
"
print "a"
之后,引发一个类似于raise ValueError('A very specific bad thing happened')
的错误。 - James Russo