supponiamo che ci sia uno script che fa qualcosa del genere:
# module writer.py
import sys
def write():
sys.stdout.write("foobar")
Supponiamo ora di voler catturare l'output della write
funzione e memorizzarlo in una variabile per un'ulteriore elaborazione. La soluzione ingenua era:
# module mymodule.py
from writer import write
out = write()
print out.upper()
Ma questo non funziona. Ho trovato un'altra soluzione e funziona, ma per favore, fammi sapere se c'è un modo migliore per risolvere il problema. Grazie
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