Selalunya, perpustakaan pihak ketiga mencetak maklumat untuk stdout semasa pelaksanaan. Walaupun ini berguna untuk nyahpepijat, ia juga boleh mengacaukan output dan mengganggu proses lain. Untuk mendapatkan kawalan ke atas output ini, pertimbangkan untuk memanfaatkan pengurus konteks untuk menangkapnya.
from io import StringIO <br>import sys</p> <p>class Capturing (senarai):</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
Untuk menangkap output dalam blok kod tertentu:
<code class="python">with Capturing() as output: do_something(my_object)</code>
Selepas blok, pembolehubah output akan mengandungi senarai semua baris yang dicetak untuk stdout.
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Output daripada Fungsi Python dengan Pengurus Konteks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!