我的部分脚本从(我们称之为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())