如何在Python中将stdout重定向到任意文件?
当从ssh会话中启动运行了很长时间的Python脚本(例如,Web应用程序)并进行背景调整,并且ssh会话关闭时,该应用程序将在尝试写入stdout时引发IOError
并失败。我需要找到一种方法来使应用程序和模块输出到文件而不是stdout,以防止由于IOError
而导致失败。当前,我使用nohup
将输出重定向到文件,并且可以完成工作,但是我想知道是否有一种出于好奇而无需使用nohup
的方法。
我已经尝试过了sys.stdout = open('somefile', 'w')
,但是这似乎并不能阻止某些外部模块仍输出到终端(或者sys.stdout = ...
线路根本没有触发)。我知道它应该可以通过我测试过的简单脚本工作,但是我还没有时间在Web应用程序上进行测试。
如果要在Python脚本中进行重定向,则设置sys.stdout
为文件对象可以解决问题:
import sys
sys.stdout = open('file', 'w')
print('test')
一种更常见的方法是在执行时使用外壳重定向(与Windows和Linux相同):
$ python foo.py > file
我这里有一个非常奇怪的用例,我正试图为我的学生编写一些简单的程序,帮助他们学习python。为了让它工作,我在TKinter框架中嵌入了一个PyGame窗口,我需要重定向stdout以更改PyGame窗口中的某些内容。我有重定向工作,如果我重定向到一个文件,它的工作很好,但如果我试图改变文本,它不工作。我将一个字符串硬编码到PyGame文本更改代码中,这是可行的,但由于某些原因,它无法与重定向文本
问题内容: 我有一个连接到Twitter Firehose并将其向下游发送数据进行处理的python脚本。在此之前,它可以正常工作,但是现在,我正在尝试仅获取文本正文。(这不是我应该如何从Twitter提取数据或如何编码/解码ascii字符的问题)。因此,当我像这样直接启动脚本时: 它工作正常,我可以看到消息正在显示在屏幕上。例如: 但是,如果我尝试将它们输出到文件中,如下所示: 愚蠢地抛出我和错
问题内容: 我在cyberciti.biz的评论中看到了这个有趣的问题。 我发现我什至找不到在sh的单行命令中执行此操作的灵活方法。 到目前为止,我对解决方案的想法是: 但是您会看到,这不是同步的,而且致命的是,它是如此丑陋。 欢迎与您分享这个想法。:) 问题答案: 你要 这里的顺序很重要。假设stdin(fd 0),stdout(fd 1)和stderr(fd 2)最初都连接到tty,因此 首先
问题内容: 我正在尝试将函数的标准输出重定向到tkinter文本小部件。我遇到的问题是,它会将每一行写到一个新窗口中,而不是将所有内容都列出在一个窗口中。该函数扫描目录并列出任何0k文件。如果没有文件为0k,则将其打印出来。因此,问题在于,如果目录中有30个0k文件,它将打开30个窗口,每个窗口只有一行。现在,我知道问题出在哪里。如果您查看我的功能代码,我会告诉您: 我知道,每次os.stat看到
问题内容: 我已经搜索过,但我只能找到有关另一种方式的问题:将stdin写入文件:) 有没有一种快速简便的方法将文件内容转储到stdout? 问题答案: 当然。假设您有一个字符串,文件名为,下面的技巧就可以了。
问题内容: 我知道如何将标准输出重定向到文件,但是我不知道如何将其重定向到字符串。 问题答案: 是的-您可以使用: 然后您可以使用获取字符串。 要指定编码(而不依赖平台定义的编码),请使用构造函数,然后 如果要还原为原始流,请使用: