在 Python 中,subprocess 模組提供了一個方便的介面來與作業系統的進程進行互動。在處理複雜的命令管道時,可能會遇到連接多個進程的挑戰。
假設我們希望使用 subprocess.Popen 執行以下 shell 指令:
echo "input data" | awk -f script.awk | sort > outfile.txt
但是,我們有一個輸入字串而不是使用 echo。此外,我們需要有關如何透過管道傳輸 awk 進程的輸出進行排序的指導。
import subprocess # Delegate the pipeline to the shell awk_sort = subprocess.Popen("awk -f script.awk | sort > outfile.txt", stdin=subprocess.PIPE, shell=True) awk_sort.communicate(b"input data\n")
這種方法利用 shell 的功能來創建管道,而 Python 負責用於提供輸入和捕獲輸出。
另一個解決方案是重寫Python 中的 script.awk 腳本,消除了對 awk 和管道的需要。這種方法簡化了程式碼並消除了潛在的兼容性問題。
答案也說明了為什麼使用awk 可能不是最佳解決方案的原因:
以上是如何使用Python的'subprocess.Popen”(有或沒有管道)有效地連結進程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!