Python捕获所有打印输出

时间:2015-06-19 16:08:16

标签: python piping

我希望在python中编写基于控制台的程序,它可以执行函数来执行通用任务,非常通用。是否有可能通过函数中的打印调用捕获写入控制台的所有内容,而无需返回字符串,类似于bash和windows shell如何允许将程序输出传递给文本文件,即

IPCONFIG> ipconfig.txt

但是在python程序中执行此操作,其中调用了一个函数,打印到该函数内部控制台的所有内容都被收集为字符串列表,然后可以保存到用户选择的txt文件中?

1 个答案:

答案 0 :(得分:11)

您可以将sys.stdout设置为您选择的文件

来执行此操作
import sys

sys.stdout = open('out.dat', 'w')
print "Hello"

sys.stdout.close()

不会显示任何输出,但会创建一个名为out.dat的文件,其中包含打印文本。

请注意,这不一定是实际文件,但可以是StringIO实例,您可以使用getvalue方法访问之前打印过的所有内容。