Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menangkap Output stdout untuk Panggilan Fungsi Python?

Bagaimana untuk Menangkap Output stdout untuk Panggilan Fungsi Python?

Patricia Arquette
Lepaskan: 2024-11-03 13:57:02
asal
181 orang telah melayarinya

How to Capture stdout Output for Python Function Calls?

Menangkap Output Stdout untuk Panggilan Fungsi Python

Apabila menggunakan perpustakaan yang log ke stdout, menangkap output mereka boleh memberikan cerapan tentang tingkah laku mereka. Artikel ini meneroka penyelesaian untuk mencapai tangkapan stdout untuk panggilan fungsi arbitrari dalam Python.

Penyelesaian Pengurus Konteks

Untuk menangkap output stdout dalam blok kod tertentu, pertimbangkan untuk menggunakan pengurus konteks seperti berikut:

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

Untuk menggunakan pengurus konteks ini, hanya bungkus panggilan fungsi:

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

Pembolehubah output kini akan mengandungi senarai baris yang dicetak oleh panggilan fungsi.

Penggunaan Terperinci

Pengurus konteks boleh digunakan beberapa kali dan hasilnya akan digabungkan. Contohnya:

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

Ini akan menghasilkan output:

displays on screen                     
done                                   
output: ['hello world', 'hello world2']
Salin selepas log masuk

Dalam Python 3.4 dan ke atas, contextlib.redirect_stdout() menyediakan pendekatan alternatif untuk mengubah hala stdout. Walau bagaimanapun, pengurus konteks Menangkap menawarkan kelebihan sebagai pengurus senarai dan juga pengurus konteks.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap Output stdout untuk Panggilan Fungsi Python?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan