Python-将stdout重定向到Python中的文件?

发布于 2021-02-02 23:23:57

如何在Python中将stdout重定向到任意文件?

当从ssh会话中启动运行了很长时间的Python脚本(例如,Web应用程序)并进行背景调整,并且ssh会话关闭时,该应用程序将在尝试写入stdout时引发IOError并失败。我需要找到一种方法来使应用程序和模块输出到文件而不是stdout,以防止由于IOError而导致失败。当前,我使用nohup将输出重定向到文件,并且可以完成工作,但是我想知道是否有一种出于好奇而无需使用nohup的方法。

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

关注者
0
被浏览
270
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    如果要在Python脚本中进行重定向,则设置sys.stdout为文件对象可以解决问题:

    import sys
    sys.stdout = open('file', 'w')
    print('test')
    

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

    $ python foo.py > file
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看