suppose there is a script doing something like this:
# module writer.py import sys def write(): sys.stdout.write("foobar") Now suppose I want to capture the output of the write function and store it in a variable for further processing. The naive solution was:
# module mymodule.py from writer import write out = write() print out.upper() But this doesn't work. I come up with another solution and it works, but please, let me know if there is a better way to solve the problem. Thanks
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