我們知道,Python/ target=_blank class=infotextkey>Python 在自動(dòng)化領(lǐng)域中被廣泛應(yīng)用,可以很好地自動(dòng)化處理一些任務(wù),就比如編寫 Python 腳本自動(dòng)化執(zhí)行重復(fù)性的任務(wù),如文件處理、數(shù)據(jù)處理、系統(tǒng)管理等需要運(yùn)行其他程序或者與操作系統(tǒng)交互的任務(wù),那么今天我們來看一下在 python 中如何運(yùn)行 shell 命令來與操作系統(tǒng)交互。
一般來講,最好是用 python 自帶的函數(shù)或模塊,而不是直接調(diào)用其他程序或者操作系統(tǒng)的命令,我們來看一下 python 中有哪些自帶模塊或者方法可以實(shí)現(xiàn)。
pathlib模塊如果你需要?jiǎng)?chuàng)建或者刪除文件/目錄,檢查文件是否存在或者改變權(quán)限等,你完全不需要使用操作系統(tǒng)的命令,你可以完全通過 pathlib 模塊來實(shí)現(xiàn),它有你需要的一切,甚至 glob、os.path 都可以不用。
我們來簡(jiǎn)單看一下關(guān)于這個(gè)模塊的例子:
tempfile模塊在 Python 中臨時(shí)創(chuàng)建和處理文件時(shí),tempfile 模塊提供了方便的方法,它可以在臨時(shí)目錄中創(chuàng)建臨時(shí)文件和臨時(shí)文件夾,并提供了一些便利的函數(shù)和類來管理這些臨時(shí)文件:
shutil 模塊前面我們知道 pathlib 模塊滿足了 python 中大多數(shù)與文件相關(guān)的需求,如果需要例如復(fù)制,移動(dòng),刪除或創(chuàng)建文件,可以使用 shutil 模塊:
os 模塊os 模塊是 Python 中一個(gè)更老的、更底層的模塊,提供了與操作系統(tǒng)交互和執(zhí)行文件系統(tǒng)操作的功能,但是隨著 python 的發(fā)展,越來越多面向?qū)ο蟮摹⒏庇^和易于使用的模塊可以供大家使用,對(duì)于 os 模塊,大家可以了解一下就行了:
sh 模塊sh 模塊不是 python 的標(biāo)準(zhǔn)模塊,它是一個(gè)第三方模塊,在使用之前我們需要安裝它:
復(fù)制 pip install sh 1. 2.當(dāng)我們通過 sh 模塊去執(zhí)行一些 shell 命令時(shí),sh 模塊會(huì)嘗試在本地環(huán)境變量($PATH)中查找?guī)в性撁Q的內(nèi)置 shell 命令或二進(jìn)制文件,如果沒有找到,可以自己添加命令路徑:
如果要將命令的輸出寫入到文件里面,可以使用 _out 參數(shù):
我們?cè)谇?shell 命令時(shí)通常會(huì)使用到管道符(|),在 sh 模塊中通過 _in 參數(shù)來實(shí)現(xiàn):
對(duì)于異常處理,我們可以簡(jiǎn)單地處理 ErrorReturnCode 或 TimeoutException 異常: