本篇 ShengYu 介紹 Python subprocess 模組用法與範例,在開發 Python 程式時,您是否曾經遇到需要執行外部指令或腳本的情況?無論是執行系統指令、呼叫其他應用程式,還是與外部行程進行通訊,Python 的 subprocess
模組都能滿足您的需求。本文將詳細介紹 subprocess
模組的用途,並透過一些實用範例來幫助您更好地理解和應用這個強大的工具。
為什麼選擇 subprocess 模組?
subprocess
模組的主要用途在於產生新的行程、連接到它們的輸入/輸出/錯誤管道,並取得它們的回傳狀態。這在自動化任務、腳本化系統管理以及構建複雜的應用程式時非常有用。
- 執行外部指令:您可以直接從 Python 程式中執行系統指令或其他腳本。
- 管道通訊:透過標準輸入、輸出和錯誤流與外部指令進行通訊。
- 捕獲指令結果:將外部指令的輸出捕獲到 Python 程式中,以便進一步處理。
- 處理回傳碼:檢查外部指令的回傳碼,以判斷其成功與否,並進行相應的錯誤處理。
接下來,我們將透過幾個實際範例來介紹 subprocess
模組的基本用法。
1. 執行簡單指令
以下程式碼展示了如何使用 subprocess.run
執行一個簡單的系統指令:
1 | import subprocess |
在這段程式碼中,我們執行了 ls -l
指令來列出當前目錄中的檔案。capture_output=True
表示捕獲指令的標準輸出,而 text=True
則將輸出作為文字處理。
2. 執行指令並捕獲輸出
下面的例子展示了如何執行一個指令並捕獲其輸出:
1 | import subprocess |
這段程式碼執行了 echo Hello, World!
指令,並將其輸出捕獲到變數 result.stdout
中,然後印出來。
3. 執行指令並處理錯誤
當執行指令可能失敗時,您可以使用 try-except
語句來捕獲並處理錯誤:
1 | import subprocess |
在這段程式碼中,我們嘗試列出一個不存在的檔案。如果指令失敗,subprocess.CalledProcessError
會被拋出,我們可以捕獲並印出錯誤資訊。
4. 使用 Popen
進行更複雜的通訊
如果需要更靈活的通訊方式,您可以使用 subprocess.Popen
:
1 | import subprocess |
這段程式碼使用 Popen
建立了一個行程,並透過管道將輸入發送給它,然後捕獲並印出其輸出。這種方式適用於需要與外部指令進行雙向通訊的情況。
小結
Python 的 subprocess
模組是一個非常強大的工具,能夠讓您在 Python 程式中輕鬆地執行和控制外部指令和行程。無論是簡單的指令執行還是複雜的行程通訊,subprocess
模組都能提供靈活的解決方案。透過理解和使用這些功能,您可以大幅提升 Python 應用程式的自動化和集成能力。
以上就是 Python subprocess 模組用法與實用範例的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!
其它相關文章推薦
Python 新手入門教學懶人包