Menangkap Output Standard daripada Panggilan Fungsi Python
Apabila menggunakan perpustakaan Python yang mengubah suai objek dan mencetak statistik untuk stdout, mungkin terdapat keperluan untuk tangkap output ini untuk analisis selanjutnya. Walau bagaimanapun, mengubah suai secara langsung fungsi untuk mengembalikan maklumat sedemikian mungkin tidak selalu dapat dilaksanakan.
Untuk menangani perkara ini, seseorang boleh menggunakan pengurus konteks Capturing:
<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>
Pengurus konteks Capturing boleh digunakan seperti berikut:
<code class="python">with Capturing() as output: do_something(my_object)</code>
Selepas panggilan fungsi, senarai output akan mengandungi baris yang dicetak oleh fungsi.
Teknik ini boleh digunakan beberapa kali, dan hasilnya boleh digabungkan:
<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>
Output:
displays on screen done output: ['hello world', 'hello world2']
Pendekatan ini menyediakan penyelesaian yang berkesan untuk menangkap output stdout apabila tidak mungkin untuk mengubah suai fungsi do_something() secara langsung.
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Output Standard daripada Panggilan Fungsi Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!