gpt4 book ai didi

python - 如何将 stderr 重定向到 Python 中的文件?

转载 作者:行者123 更新时间:2023-12-01 04:23:01 25 4
gpt4 key购买 nike

以下代码是我从 http://forums.devshed.com/python-programming-11/redirect-stdout-stderr-file-500952.html 获得的它告诉我们如何将 stderr 重定向到文件。我尝试过,但错误消息没有保存到文件中。虽然我没有使用

sys.stderr = file_err

错误显示在空闲终端中,当我将 file_err 分配给 sys.stderr 时,错误不会显示在空闲终端中,并且不会被复制到 file_name.log

import sys

original_stderr = sys.stderr
file_err = open('file_name.log', 'w') # I tried with .txt also
sys.stderr = file_err
print(list[file]) # Used to create a NameError
sys.stderr = original_stderr
file_err.close()

我应该将其写入文件还是程序中有错误?

最佳答案

你的代码工作正常(我的意思是:重定向到stderr。)。但请注意,从 python3.5 开始,您可以使用 contextlib.redirect_stderr的上下文管理器来执行此操作:

from contextlib import redirect_stderr

with open('filename.log', 'w') as stderr, redirect_stderr(stderr):
# errors from here are logged to the file.

注意:

  • 您不必显式调用close
  • 您不必显式保存旧的 stderr 并在最后恢复它。

顺便说一句:您可以简单地使用 sys.__stderr__,而不是保存旧的 stderr 值。

关于python - 如何将 stderr 重定向到 Python 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33500220/

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