问题 Python捕获所有打印输出


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

IPCONFIG> ipconfig.txt

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


3143
2018-06-19 16:08


起源

当然。从shell运行Python脚本,并像往常一样使用shell重定向输出。 - kindall


答案:


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

import sys

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

sys.stdout.close()

不会显示任何输出但会创建一个名为的文件 out.dat 印有文字。

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


10
2018-06-19 16:11



谢谢,这正是我想要的。 - BruceJohnJennerLawso