Andaikan anda mempunyai skrip yang melaksanakan operasi tulis menggunakan sys.stdout. Penyelesaian awal untuk menangkap output dan menyimpannya dalam pembolehubah untuk pemprosesan selanjutnya mungkin:
<code class="python"># writer.py import sys def write(): sys.stdout.write("foobar") # mymodule.py from writer import write out = write() print(out.upper())</code>
Walau bagaimanapun, pendekatan ini gagal menangkap output.
Satu penyelesaian yang mungkin adalah mengubah suai skrip seperti berikut:
<code class="python">import sys from cStringIO import StringIO # setup the environment backup = sys.stdout # #### sys.stdout = StringIO() # capture output write() out = sys.stdout.getvalue() # release output # #### sys.stdout.close() # close the stream sys.stdout = backup # restore original stdout print(out.upper()) # post processing</code>
Pendekatan ini menggunakan penimbal untuk menangkap aliran output.
Bermula dengan Python 3.4, terdapat cara yang lebih ringkas untuk menangkap output menggunakan contextlib.redirect_stdout pengurus konteks:
<code class="python">from contextlib import redirect_stdout import io f = io.StringIO() with redirect_stdout(f): help(pow) s = f.getvalue()</code>
Penyelesaian ini lebih mudah dan menghapuskan keperluan untuk mengurus sandaran dan menutup strim secara manual.
Atas ialah kandungan terperinci Bagaimana untuk Menangkap Output daripada Skrip Python Menggunakan Manipulasi I/O?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!