Menulis Output Proses ke Terminal dan Fail Serentak dengan subproses Python
Apabila melaksanakan berbilang boleh laku menggunakan subprocess.call(), adalah wajar untuk mempunyai output dipaparkan dalam kedua-dua terminal dan fail yang ditetapkan. Walau bagaimanapun, tingkah laku lalai hanya membenarkan ubah hala output ke sama ada fail atau terminal.
Untuk mengatasi pengehadan ini, pertimbangkan untuk menggunakan Popen secara langsung bersama-sama dengan argumen stdout=PIPE. Ini akan membolehkan anda membaca output daripada atribut stdout objek Popen.
Untuk mencapai gelagat yang diingini, gunakan langkah berikut:
Berikut ialah contoh cara menggunakan fungsi ini:
<code class="python">import sys from subprocess import Popen, PIPE from threading import Thread def tee(infile, *files): ... def teed_call(cmd_args, **kwargs): ... outf, errf = open("out.txt", "wb"), open("err.txt", "wb") assert not teed_call(["cat", __file__], stdout=None, stderr=errf) assert not teed_call(["echo", "abc"], stdout=outf, stderr=errf, bufsize=0) assert teed_call(["gcc", "a b"], close_fds=True, stdout=outf, stderr=errf)</code>
Kod ini menulis output dengan berkesan kepada kedua-duanya fail dan terminal secara serentak untuk setiap arahan yang dilaksanakan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menulis Output Subproses ke Kedua-dua Terminal dan Fail Secara serentak dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!