Python 運行 shell 命令的一些方法
哈嘍大家好,我是咸魚。
我們知道,python 在自動化領域中被廣泛應用,可以很好地自動化處理一些任務,就比如編寫 Python 腳本自動化執行重復性的任務,如文件處理、數據處理、系統管理等需要運行其他程序或者與操作系統交互的任務,那么今天我們來看一下在 python 中如何運行 shell 命令來與操作系統交互。
一般來講,最好是用 python 自帶的函數或模塊,而不是直接調用其他程序或者操作系統的命令,我們來看一下 python 中有哪些自帶模塊或者方法可以實現。

pathlib模塊
如果你需要創建或者刪除文件/目錄,檢查文件是否存在或者改變權限等,你完全不需要使用操作系統的命令,你可以完全通過 pathlib 模塊來實現,它有你需要的一切,甚至 glob、os.path 都可以不用。
我們來簡單看一下關于這個模塊的例子:

tempfile模塊
在 Python 中臨時創建和處理文件時,tempfile 模塊提供了方便的方法,它可以在臨時目錄中創建臨時文件和臨時文件夾,并提供了一些便利的函數和類來管理這些臨時文件:

shutil 模塊
前面我們知道 pathlib 模塊滿足了 python 中大多數與文件相關的需求,如果需要例如復制,移動,刪除或創建文件,可以使用 shutil 模塊:

os 模塊
os 模塊是 Python 中一個更老的、更底層的模塊,提供了與操作系統交互和執行文件系統操作的功能,但是隨著 python 的發展,越來越多面向對象的、更直觀和易于使用的模塊可以供大家使用,對于 os 模塊,大家可以了解一下就行了:

sh 模塊
sh 模塊不是 python 的標準模塊,它是一個第三方模塊,在使用之前我們需要安裝它:
pip install sh
當我們通過 sh 模塊去執行一些 shell 命令時,sh 模塊會嘗試在本地環境變量($PATH)中查找帶有該名稱的內置 shell 命令或二進制文件,如果沒有找到,可以自己添加命令路徑:

如果要將命令的輸出寫入到文件里面,可以使用 _out 參數:

我們在敲 shell 命令時通常會使用到管道符(|),在 sh 模塊中通過 _in 參數來實現:

對于異常處理,我們可以簡單地處理 ErrorReturnCode 或 TimeoutException 異常:























