Oftmals geben Bibliotheken von Drittanbietern Informationen während der Ausführung auf stdout aus. Dies kann zwar beim Debuggen nützlich sein, kann aber auch die Ausgabe überladen und andere Prozesse stören. Um die Kontrolle über diese Ausgabe zu erlangen, sollten Sie erwägen, einen Kontextmanager zu nutzen, um sie zu erfassen.
from io import StringIO <br>import sys</p> <p>class Capturing (Liste):</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">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
Um die Ausgabe innerhalb eines bestimmten Codeblocks zu erfassen:
<code class="python">with Capturing() as output: do_something(my_object)</code>
Nachher Nach dem Block enthält die Ausgabevariable eine Liste aller auf stdout gedruckten Zeilen.
Das obige ist der detaillierte Inhalt vonWie erfasst man die Ausgabe einer Python-Funktion mit einem Kontextmanager?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!