Heim >Backend-Entwicklung >Python-Tutorial >Wie erfasst man die Standardausgabe in Python-Skripten?
Erfassen der Skript-Standardausgabe
In einem Szenario, in dem ein Skript bestimmte Aufgaben ausführt, wie z. B. das Schreiben von Daten in seine Standardausgabe, erfasst es diese Ausgabe kann für die weitere Verarbeitung von entscheidender Bedeutung sein. Ein gängiger Ansatz besteht darin, zu versuchen, die Ausgabe in einer Variablen zu speichern, wie im folgenden Beispiel dargestellt:
<code class="python"># writer.py import sys def write(): sys.stdout.write("foobar")</code>
<code class="python"># mymodule.py from writer import write out = write() print(out.upper())</code>
Dieser Ansatz erfasst jedoch die Ausgabe des Skripts nicht. Eine alternative Lösung, die ein StringIO-Objekt und eine Umgebungseinrichtung verwendet, erfasst erfolgreich die Ausgabe:
<code class="python">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</code>
Python 3.4-Lösung
Für Python-Versionen 3.4 und höher eine weitere Ein unkomplizierter Ansatz ist mit dem Kontextmanager contextlib.redirect_stdout verfügbar:
<code class="python">from contextlib import redirect_stdout from io import StringIO f = StringIO() with redirect_stdout(f): help(pow) s = f.getvalue()</code>
Das obige ist der detaillierte Inhalt vonWie erfasst man die Standardausgabe in Python-Skripten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!