Heim > Artikel > Backend-Entwicklung > Wie erfasst man die Standardausgabe von Python-Funktionsaufrufen?
Erfassen der Standardausgabe von Python-Funktionsaufrufen
Bei der Verwendung von Python-Bibliotheken, die Objekte ändern und Statistiken auf stdout ausgeben, kann dies erforderlich sein Erfassen Sie diese Ausgabe zur weiteren Analyse. Es ist jedoch möglicherweise nicht immer möglich, die Funktion direkt zu ändern, um solche Informationen zurückzugeben.
Um dieses Problem zu beheben, kann man den Capturing-Kontextmanager verwenden:
<code class="python">from io import StringIO import sys class Capturing(list): def __enter__(self): self._stdout = sys.stdout sys.stdout = self._stringio = StringIO() return self def __exit__(self, *args): self.extend(self._stringio.getvalue().splitlines()) del self._stringio # free up some memory sys.stdout = self._stdout</code>
Der Capturing-Kontextmanager kann verwendet werden wie folgt:
<code class="python">with Capturing() as output: do_something(my_object)</code>
Nach dem Funktionsaufruf enthält die Ausgabeliste die von der Funktion gedruckten Zeilen.
Diese Technik kann mehrmals angewendet werden und die Ergebnisse können verkettet werden:
<code class="python">with Capturing() as output: print('hello world') print('displays on screen') with Capturing(output) as output: # note the constructor argument print('hello world2') print('done') print('output:', output)</code>
Ausgabe:
displays on screen done output: ['hello world', 'hello world2']
Dieser Ansatz bietet eine effektive Problemumgehung für die Erfassung der Standardausgabe, wenn es nicht möglich ist, die Funktion do_something() direkt zu ändern.
Das obige ist der detaillierte Inhalt vonWie erfasst man die Standardausgabe von Python-Funktionsaufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!