「Python」6種python中執行shell命令方法


用Python調用Shell命令有如下幾種方式:

第一種:

os.system("The command you want").

這個調用相當直接,且是同步進行的,程序需要阻塞並等待返回。返回值是依賴於系統的,直接返回系統的調用返回值,所以windows和linux是不一樣的。

第二種:

os.popen(command[,mode[,bufsize]])

先給大家看個例子

教程|6種Python中執行shell命令的方法,你喜歡那種?

 

可以看出,popen方法通過p.read()獲取終端輸出,而且popen需要關閉close().當執行成功時,close()不返回任何值,失敗時,close()返回系統返回值. 可見它獲取返回值的方式和os.system不同。

第三種,使用commands模塊,同樣看一組例子。

教程|6種Python中執行shell命令的方法,你喜歡那種?

 

根據你需要的不同,commands模塊有三個方法可供選擇。getstatusoutput, getoutput, getstatus。

但是,如上三個方法都不是Python推薦的方法,而且在Python3中其中兩個已經消失。Python文檔中目前全力推薦第四個方法,subprocess!

subprocess使用起來同樣簡單:

教程|6種Python中執行shell命令的方法,你喜歡那種?

 

直接調用命令,返回值即是系統返回。shell=True表示命令最終在shell中運行。Python文檔中出於安全考慮,不建議使用shell=True。建議使用Python庫來代替shell命令,或使用pipe的一些功能做一些轉義。官方的出發點是好的,不過真心麻煩了很多, so....

如果你更關注命令的終端輸出,可以這樣

教程|6種Python中執行shell命令的方法,你喜歡那種?

 

同樣很簡單。

其實還有兩種方法沒有講:os.spawn* 和 popen2.*。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM