python中執(zhí)行shell命令的4種方式
Python經(jīng)常被稱作“膠水語(yǔ)言”,因?yàn)樗軌蜉p易地操作其他程序,輕易地包裝使用其他語(yǔ)言編寫的庫(kù)。下面是學(xué)習(xí)啦小編收集整理的python中執(zhí)行shell命令的4種方式,希望對(duì)大家有幫助~~
python中執(zhí)行shell命令的4種方式
工具/原料
Python環(huán)境
方法/步驟
os.system("The command you want"). 這個(gè)調(diào)用相當(dāng)直接,且是同步進(jìn)行的,程序需要阻塞并等待返回。返回值是依賴于系統(tǒng)的,直接返回系統(tǒng)的調(diào)用返回值,所以windows和linux是不一樣的
os.popen(command[,mode[,bufsize]]),圖中是一個(gè)例子. 可以看出,popen方法通過(guò)p.read()獲取終端輸出,而且popen需要關(guān)閉close().當(dāng)執(zhí)行成功時(shí),close()不返回任何值,失敗時(shí),close()返回系統(tǒng)返回值. 可見(jiàn)它獲取返回值的方式和os.system不同。
使用commands模塊,圖中是一組例子。根據(jù)你需要的不同,commands模塊有三個(gè)方法可供選擇。getstatusoutput, getoutput, getstatus。
但是,如上三個(gè)方法都不是Python推薦的方法,而且在Python3中其中兩個(gè)已經(jīng)消失。Python文檔中目前全力推薦第四個(gè)方法,subprocess! subprocess使用起來(lái)同樣簡(jiǎn)單:
直接調(diào)用命令,返回值即是系統(tǒng)返回。shell=True表示命令最終在shell中運(yùn)行。Python文檔中出于安全考慮,不建議使用shell=True。建議使用Python庫(kù)來(lái)代替shell命令,或使用pipe的一些功能做一些轉(zhuǎn)義。官方的出發(fā)點(diǎn)是好的,不過(guò)真心麻煩了很多, so.... 如果你更關(guān)注命令的終端輸出,可以如下圖這樣操作, 同樣很簡(jiǎn)單.
python中執(zhí)行shell命令的4種方式相關(guān)文章: