本篇 ShengYu 介紹 Python subprocess.run 用法與範例,在現代編程中,經常需要從 Python 程式中執行系統指令或外部程式。Python 提供了多種方式來實現這一點,其中最強大和靈活的工具之一就是 subprocess
模組中的 subprocess.run
函式。本文將詳盡介紹 subprocess.run
的用途、語法,並透過具體範例來展示其應用。
subprocess.run
的用途
subprocess.run
是一個用於執行系統指令或外部程式的高級接口。它允許開發者執行指令、等待指令完成、檢查指令的退出狀態碼,並選擇性地取得指令的標準輸出和標準錯誤。這使得 subprocess.run
成為一個非常靈活和強大的工具,適合各種需要與外部程式互動的場景。
subprocess.run
的語法
1 | subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None) |
參數說明
args
:這是要執行的指令及其參數,通常以清單形式提供,例如['ls', '-l']
。stdin
、stdout
、stderr
:分別指定標準輸入、標準輸出和標準錯誤的處理方式。capture_output
:若設定為True
,將捕獲標準輸出和標準錯誤。shell
:若設定為True
,指令將透過 shell 執行(例如bash
或cmd
)。cwd
:設定指令執行的當前工作目錄。timeout
:設定指令執行的超時時間(以秒為單位)。check
:若設定為True
,當指令回傳非零退出狀態時將拋出CalledProcessError
。encoding
和errors
:設定標準輸入、輸出和錯誤的編碼和錯誤處理。text
或universal_newlines
:若設定為True
,將輸入和輸出視為文字流,而非位元組流。env
:提供一個字典來設定環境變數。
範例 1:執行一個簡單的指令
以下範例示範如何使用 subprocess.run
執行一個簡單的指令並打印其輸出:
1 | import subprocess |
這段程式碼執行 ls -l
指令並打印輸出到控制台。透過設定 capture_output=True
和 text=True
,我們能夠捕獲並以文字形式處理指令的標準輸出。
範例 2:檢查指令的退出狀態
在某些情況下,我們需要檢查指令的退出狀態以確定其是否成功執行。以下範例展示了如何實現這一點:
1 | import subprocess |
這段程式碼執行 ls -l /nonexistent
指令,如果目錄不存在,則會打印錯誤資訊。
範例 3:在 shell 中執行指令
有時我們需要透過 shell 來執行指令,例如使用環境變數。以下範例展示了如何設定 shell=True
來達成這一目標:
1 | import subprocess |
這段程式碼在 shell 中執行 echo $HOME
指令並打印出環境變數 HOME
的值。
範例 4:處理指令超時
在某些情況下,指令可能會執行很長時間。在這種情況下,我們可以設定超時來防止指令無限期地執行:
1 | import subprocess |
這段程式碼嘗試執行 sleep 5
指令,但設定了 2 秒的超時時間。由於指令需要更長時間才能完成,因此會拋出 TimeoutExpired
異常。
結論
subprocess.run
是 Python 中一個非常有用的函式,用於執行外部指令並處理其輸出。透過理解其各種參數和選項,您可以靈活地將其應用於多種場景,無論是簡單的指令執行還是複雜的行程管理。本文透過具體的範例展示了 subprocess.run
的一些常見用法,希望能幫助您更好地掌握這個強大的工具。
透過這些範例和解釋,相信您已經對 subprocess.run
有了一個全面的了解。不妨在自己的項目中嘗試使用,進一步體會其強大和靈活性。
以上就是 Python subprocess.run 用法與範例的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!
其它相關文章推薦
Python 新手入門教學懶人包
Python subprocess.call 用法與範例解析
Python subprocess.Popen 用法與範例
Python swap 用法與範例
如何在Python中使用SQLite:完整指南與實用範例
Python 與 MongoDB 的完美結合:詳細指南與範例