访问函数调用的打印输出

时间:2013-01-20 08:17:02

标签: python python-2.7 stdout

我的部分脚本调用了一个函数(让我们称之为foo)另一个模块(很久以前由其他人编写,我现在不想开始修改)。
foo将有趣的东西写入stdout(但返回None),部分是通过调用其他函数。 我想访问foo写给stdout的这些有趣的事情。

据我所知,subprocess用于调用我通常从命令行调用的命令。我可以从我的脚本调用python函数的等效函数吗?

我在python2.7上,如果重要

1 个答案:

答案 0 :(得分:4)

正如@JimDeville评论的那样,你可以交换标准输出:

#!python2.7
import io
import sys
f=io.BytesIO()

def foo():
    print 'hello, world!'

save,sys.stdout = sys.stdout,f
foo()
sys.stdout = save
f.seek(0)
print f.read()

输出:

hello, world!