在 Python 中使用 subprocess 模組執行 shell 指令時,了解如何重新導向輸出非常重要。常見的情況是將命令的標準輸出重定向到檔案中。本文透過探索 Python 實現輸出重定向的方法來解決這項需求。
在提供的 Python 程式碼片段中,使用者嘗試使用 subprocess.call 透過分割指令來將 cat 指令的輸出重新導向到檔案使用 shlex 進入參數。但是,輸出仍然顯示在控制台中。
要在 Python 3.5 及更高版本中正確重定向輸出,可以使用 subprocess.run 的 stdout 參數。此參數接受一個開啟的檔案句柄作為其值,這是輸出的定向位置。以下是一個範例:
# Use a list of args instead of a string input_files = ['file1', 'file2', 'file3'] my_cmd = ['cat'] + input_files with open('myfile', "w") as outfile: subprocess.run(my_cmd, stdout=outfile)
在此程式碼中,要執行的命令被拆分為參數列表,並且輸出被重定向到名為「myfile」的檔案。 with 語句確保檔案被正確開啟、寫入和關閉。
值得注意的是,為此目的不需要使用像 cat 這樣的外部指令。 Python 內建了讀寫檔案的函數,可以直接使用:
with open('myfile', "w") as outfile: outfile.write(open('file1').read()) outfile.write(open('file2').read()) outfile.write(open('file3').read())
透過了解如何使用子進程正確重定向輸出或利用Python 的檔案處理功能,您可以有效地管理檔案流Python 腳本中的訊息。
以上是如何在 Python 中使用子程序重定向輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!