python - 将标准输出重定向到 Python 中的文件?

如何将标准输出重定向到 Python 中的任意文件?

当一个长时间运行的 Python 脚本(例如,Web 应用程序)从 ssh session 中启动并返回,并且 ssh session 关闭时,应用程序将引发 IOError 并在尝试写入标准输出时失败。我需要找到一种方法使应用程序和模块输出到文件而不是标准输出,以防止由于 IOError 而导致失败。目前,我使用 nohup 将输出重定向到文件,这样就完成了工作,但出于好奇,我想知道是否有一种方法可以不使用 nohup。

我已经尝试过 sys.stdout = open('somefile', 'w'),但这似乎并不能阻止某些外部模块仍然输出到终端(或者可能是 sys.stdout = ... 行根本没有触发)。我知道它应该可以通过我测试过的更简单的脚本来工作,但我还没有时间在 Web 应用程序上进行测试。

最佳答案

如果您想在 Python 脚本中进行重定向,将 sys.stdout 设置为文件对象即可:

# for python3
import sys
with open('file', 'w') as sys.stdout:
    print('test')

一种更常见的方法是在执行时使用 shell 重定向(在 Windows 和 Linux 上相同):

$ python3 foo.py > file

https://stackoverflow.com/questions/4675728/

相关文章:

python - 如何使用 Flask 从 URL 获取命名参数?

python - 不重新编译的不区分大小写的正则表达式?

python - 从 Django QuerySet 获取 SQL

python - 如何将 time.struct_time 对象转换为 datetime 对象?

python - 如何在 Python 中获取当前模块中所有类的列表?

python - 默认字典的默认字典?

python - PEP8 的 E128 : continuation line under-ind

python - 将 subprocess.Popen 调用的输出存储在字符串中

python - 如何从 Python 中的线程获取返回值?

javascript - 当您将 Selenium 与 chromedriver 一起使用时,网站可