Heim >Backend-Entwicklung >Python-Tutorial >Wie erfasst man die Standardausgabe in Python?

Wie erfasst man die Standardausgabe in Python?

DDD
DDDOriginal
2024-11-03 13:34:30809Durchsuche

How to Capture Standard Output in Python?

Erfassen der Standardausgabe in Python

In Python ist es aus verschiedenen Gründen oft nützlich, die gedruckte Ausgabe in der Standardausgabe (stdout) zu erfassen , beispielsweise zum Speichern zur späteren Bearbeitung oder zum Testen. Ein häufiges Szenario besteht darin, eine Funktion aus einer Bibliothek wie do_something(my_object) aufzurufen, die Informationen auf stdout ausgibt.

Um die Ausgabe dieses Funktionsaufrufs zu erfassen, kann der folgende Ansatz verwendet werden:

  1. Implementieren Sie einen verkettenden Kontextmanager (Capturing):

    • Definieren Sie eine Klasse mit dem Namen Capturing, die von der Liste erbt.
    • Implementieren Sie die Methoden __enter__ und __exit__, um die Standardausgabe zu erfassen.
    • In Seine __enter__-Methode speichert die aktuelle Standardausgabe in self._stdout und leitet die Standardausgabe an eine weiter In-Memory-StringIO-Puffer (self._stringio).
    • Hängen Sie in der __exit__-Methode die erfasste Ausgabe an ihre interne Liste (self) an, nachdem stdout auf den ursprünglichen Zustand zurückgesetzt wurde.
  2. Verwenden Sie den Kontext Manager:

    • Verwenden Sie eine with-Anweisung, um eine Instanz von Capturing zu erstellen.
    • Übergeben Sie die Instanz als Argument an die __init__-Methode von Capturing, um ihre erfasste Ausgabe an die anzuhängen Instanz, die im vorherigen Schritt erstellt wurde.
  3. Erhalten Sie die Erfasste Ausgabe:

    • Nach dem Verlassen des with-Blocks enthält die Ausgabevariable nun die erfasste Standardausgabe als Liste von Zeichenfolgen.

Beispielverwendung:

<code class="python">from contextlib import redirect_stdout  # redirect_stdout is only available in Python 3.4 or later

def do_something(my_object):
    print('stdout info')

with redirect_stdout(StringIO()) as stdout:
    do_something(my_object)
    captured_output = stdout.getvalue()</code>

Verwendung von Python 3.4 Syntax:

<code class="python">with StringIO() as output:
    with redirect_stdout(output):
        do_something(my_object)
    captured_output = output.getvalue()</code>

Durch Befolgen dieser Schritte können Sie die Standardausgabe eines Python-Funktionsaufrufs einfach erfassen und so die gedruckten Informationen für weitere Verarbeitungs-, Debugging- oder Testzwecke verwenden.

Das obige ist der detaillierte Inhalt vonWie erfasst man die Standardausgabe in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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