我的部分脚本从(我们称之为foo)另一个模块(很久以前由其他人编写,我现在不想开始修改它)调用一个函数。
foo部分地通过调用其他函数将有趣的东西写入stdout(但返回None)。我想访问这些foo写入的有趣的东西stdout。
据我所知,subprocess这意味着调用我通常会从命令行调用的命令。我会从我的脚本中调用的 python 函数是否有等价物?
我在 python2.7 上,如果重要的话
我的部分脚本从(我们称之为foo)另一个模块(很久以前由其他人编写,我现在不想开始修改它)调用一个函数。
foo部分地通过调用其他函数将有趣的东西写入stdout(但返回None)。我想访问这些foo写入的有趣的东西stdout。
据我所知,subprocess这意味着调用我通常会从命令行调用的命令。我会从我的脚本中调用的 python 函数是否有等价物?
我在 python2.7 上,如果重要的话
正如@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())