Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengalihkan Output Boleh Laku ke Kedua-dua Fail dan Terminal?

Bagaimana untuk Mengalihkan Output Boleh Laku ke Kedua-dua Fail dan Terminal?

Patricia Arquette
Patricia Arquetteasal
2024-11-04 08:36:30307semak imbas

How to Redirect Executable Output to Both Files and the Terminal?

Melaksanakan Boleh Laku dengan Output ke Kedua-dua Fail dan Terminal

Apabila melaksanakan berbilang boleh laku menggunakan subprocess.call(), anda mungkin mahu mengarahkan output standard dan output ralat kepada kedua-dua fail dan terminal. Walau bagaimanapun, menggunakan stdout=outf atau stderr=errf hanya menentukan bahawa output harus ditulis pada fail, bukan dipaparkan pada terminal.

Untuk mencapai tingkah laku yang diingini, anda boleh memanfaatkan kelas Popen secara langsung dan menggunakan stdout=Hujah PAIP untuk menangkap output standard dalam paip dan bukannya fail. Begini cara anda boleh melakukannya:

<code class="python">from subprocess import Popen, PIPE

with open("out.txt", "wb") as outf, open("err.txt", "wb") as errf:
    p = Popen(["cat", __file__], stdout=PIPE, stderr=errf)
    # Read the output from the pipe
    output = p.stdout.read()
    # Write the output to the terminal
    print(output)
    # Ensure the process completes and wait for the output to be fully written
    p.wait()</code>

Dalam contoh ini, kami menangkap stdout dalam paip dan membacanya menggunakan p.stdout.read(). Kami kemudian mencetak output ke terminal sebelum menunggu proses selesai dan untuk output ditulis sepenuhnya ke fail. Ini memastikan bahawa output dipaparkan pada terminal serta ditulis pada fail yang ditentukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan Output Boleh Laku ke Kedua-dua Fail dan Terminal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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