使用Python 的子進程同時將進程輸出寫入終端和檔案
當使用subprocess.call() 執行多個可執行文件時,最好有輸出顯示在終端機和指定文件中。但是,預設行為僅允許輸出重定向到檔案或終端。
要克服此限制,請考慮直接將 Popen 與 stdout=PIPE 參數結合使用。這將使您能夠從 Popen 物件的 stdout 屬性讀取輸出。
要實現所需的行為,請執行以下步驟:
以下是如何使用這些函數的範例:
<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>
此程式碼有效地將輸出寫入兩個檔案中每個執行的命令同時顯示檔案和終端。
以上是如何在 Python 中同時將子進程輸出寫入終端機和檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!