如何将标准输出重定向到 Python 中的任意文件?
当一个长时间运行的 Python 脚本(例如,Web 应用程序)从 ssh 会话中启动并返回,并且 ssh 会话关闭时,应用程序将引发 IOError 并在尝试写入标准输出时失败。我需要找到一种方法使应用程序和模块输出到文件而不是标准输出,以防止由于 IOError 而导致失败。目前,我使用 nohup 将输出重定向到一个文件,这样就可以完成工作,但出于好奇,我想知道是否有一种方法可以不使用 nohup 来做到这一点。
我已经尝试过 sys.stdout = open('somefile', 'w')
,但这似乎并不能阻止某些外部模块仍然输出到终端(或者 sys.stdout = ...
线根本没有触发)。我知道它应该可以从我测试过的更简单的脚本中运行,但我还没有时间在 Web 应用程序上进行测试。
原文由 user234932 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想在 Python 脚本中进行重定向,请将
sys.stdout
设置为文件对象即可:一种更常见的方法是在执行时使用 shell 重定向(在 Windows 和 Linux 上相同):