Python捕获所有打印输出

Python捕获所有打印输出,python,piping,Python,Piping,我希望用python编写基于控制台的程序,这些程序可以执行函数来执行通用任务,非常通用。是否可以在函数中捕获通过打印调用写入控制台的所有内容,而无需返回字符串,类似于bash和windowsshell如何允许将程序输出管道化到文本文件,即 ipconfig>ipconfig.txt 但是在调用函数的python程序内部执行此操作时,打印到该函数内部控制台的所有内容都将收集为字符串列表,然后可以保存到用户选择的txt文件中。您可以通过将sys.stdout设置为您选择的文件来执行此操作 impor

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

ipconfig>ipconfig.txt


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

您可以通过将
sys.stdout
设置为您选择的文件来执行此操作

import sys

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

sys.stdout.close()
将不显示任何输出,但将创建一个名为
out.dat
的文件,其中包含打印文本


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

谢谢,这正是我想要的。@Simon Gibbons,也可以在控制台上输出相同的数据,同时并行写入“out.dat”文件吗?当然可以。从shell运行Python脚本,并像往常一样使用shell重定向输出。