Angenommen, es gibt ein Skript, das so etwas tut:
# module writer.py
import sys
def write():
sys.stdout.write("foobar")
Angenommen, ich möchte die Ausgabe der write
Funktion erfassen und zur weiteren Verarbeitung in einer Variablen speichern. Die naive Lösung war:
# module mymodule.py
from writer import write
out = write()
print out.upper()
Das funktioniert aber nicht. Ich habe eine andere Lösung gefunden und sie funktioniert, aber bitte lassen Sie mich wissen, ob es einen besseren Weg gibt, das Problem zu lösen. Vielen Dank
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