gpt4 book ai didi

python - 使用 Python 将 stdout 和 stderr 重定向到同一文件

转载 作者:行者123 更新时间:2023-12-02 03:41:35 25 4
gpt4 key购买 nike

我想将 Python 脚本的标准错误和标准输出重定向到同一个输出文件。从终端我可以使用

$ python myfile.py &> out.txt

完成我想要的相同任务,但我需要从Python脚本本身来完成它。

我调查了问题Redirect subprocess stderr to stdout , How to redirect stderr in Python? ,以及来自 here 的示例 10.10 ,然后我尝试了以下操作:

import sys
fsock = open('out.txt', 'w')
sys.stdout = sys.stderr = fsock

print "a"

它正确地打印了文件out.txt中的字母“a”;但是,当我尝试以下操作时:

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

print 1/0  # Zero division error

ZeroDivisionError 被输出到文件,因为我想将它包含在我的问题中。

最佳答案

这有效

sys.stdout = open('out.log', 'w')
sys.stderr = sys.stdout

关于python - 使用 Python 将 stdout 和 stderr 重定向到同一文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38776104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com