4

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

据我所知,subprocess这意味着调用我通常会从命令行调用的命令。我会从我的脚本中调用的 python 函数是否有等价物?

我在 python2.7 上,如果重要的话

4

1 回答 1

4

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

#!python2.7
import io
import sys

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

capture = io.BytesIO()
save,sys.stdout = sys.stdout,capture
foo()
sys.stdout = save
print capture.getvalue()

输出:

hello, world!

io.StringIO由于stdout预期是 Unicode 流,Python 3 版本改为使用:

#!python3
import io
import sys

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

capture = io.StringIO()
save,sys.stdout = sys.stdout,capture
foo()
sys.stdout = save
print(capture.getvalue())
于 2013-01-20T08:30:06.130 回答