假设有一个脚本在做这样的事情:
# module writer.py
import sys
def write():
sys.stdout.write("foobar")
现在假设我想捕获write
函数的输出并将其存储在一个变量中以供进一步处理。天真的解决方案是:
# module mymodule.py
from writer import write
out = write()
print out.upper()
但这不起作用。我想出了另一种解决方案并且它有效,但是请让我知道是否有更好的方法来解决问题。谢谢
import sys
from cStringIO import StringIO
# setup the environment
backup = sys.stdout
# ####
sys.stdout = StringIO() # capture output
write()
out = sys.stdout.getvalue() # release output
# ####
sys.stdout.close() # close the stream
sys.stdout = backup # restore original stdout
print out.upper() # post processing