So erfassen Sie Programmausgaben effektiv in Python: Jenseits grundlegender Lösungen

Mary-Kate Olsen
Freigeben: 2024-10-17 14:47:02
Original
338 Leute haben es durchsucht

How to Capture Program Output Effectively in Python: Beyond Basic Solutions

Erfassen der Programmausgabe: Jenseits naiver Lösungen

Bei der Python-Skripterstellung ist die Erfassung der Programmausgabe zur weiteren Verarbeitung ein häufiges Bedürfnis. Auch wenn naive Lösungen einfach erscheinen mögen, sind sie oft unzureichend. Betrachten Sie das folgende Skript, das in stdout schreibt:

# writer.py
import sys

def write():
    sys.stdout.write("foobar")
Nach dem Login kopieren

Der Versuch, die Ausgabe mit dem folgenden Code zu erfassen, schlägt fehl:

# mymodule.py
from writer import write

out = write()
print(out.upper())
Nach dem Login kopieren

Um die Ausgabe effektiv zu erfassen, ist eine robustere Lösung erforderlich . Ein Ansatz besteht darin, den Stdout-Stream des Systems zu ändern:

import sys
from cStringIO import StringIO

# Redirect stdout to a StringIO object
backup = sys.stdout
sys.stdout = StringIO()

# Perform the write operation
write()

# Retrieve and restore stdout
out = sys.stdout.getvalue()
sys.stdout.close()
sys.stdout = backup

# Process the captured output
print(out.upper())
Nach dem Login kopieren

Kontextmanager für Python 3.4:

Für Python 3.4 und höher ist eine einfachere und prägnantere Lösung verfügbar Verwendung des Kontextmanagers contextlib.redirect_stdout:

from contextlib import redirect_stdout
import io

f = io.StringIO()
# Redirect stdout to f using the context manager
with redirect_stdout(f):
    help(pow)

# Retrieve captured output from f
s = f.getvalue()
Nach dem Login kopieren

Dieser elegante Ansatz vereinfacht den Ausgabeerfassungsprozess und erleichtert die Handhabung in Ihren Python-Skripten.

Das obige ist der detaillierte Inhalt vonSo erfassen Sie Programmausgaben effektiv in Python: Jenseits grundlegender Lösungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!