Bagaimana untuk Menangkap Output daripada Fungsi Python dengan Pengurus Konteks?

Linda Hamilton
Lepaskan: 2024-11-03 12:31:03
asal
189 orang telah melayarinya

How to Capture Output from a Python Function with a Context Manager?

Memintas Output daripada Fungsi Python dengan Menangkap

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.

Pelaksanaan

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
Salin selepas log masuk

Penggunaan

Untuk menangkap output dalam blok kod tertentu:

<code class="python">with Capturing() as output:
    do_something(my_object)</code>
Salin selepas log masuk

Selepas blok, pembolehubah output akan mengandungi senarai semua baris yang dicetak untuk stdout.

Teknik Lanjutan

  • Tangkapan Berbilang: Pengurus konteks ini boleh digunakan beberapa kali untuk mengumpul output.
  • Menyepadukan dengan contextlib.redirect_stdout() (Python 3.4 ): Ini menawarkan cara alternatif untuk mencapai ubah hala menggunakan io.StringIO.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan