Python調用Shell,有兩種方法:os.system(cmd)或os.popen(cmd)腳本執行過程中的輸出內容。實際使用時視需求情況而選擇。
兩者的區別是:
- os.system(cmd)的返回值是腳本的退出狀態碼,只會有0(成功),1,2
- os.popen(cmd)返回腳本執行的輸出內容作為返回值
比如計算一個文件的md5值:
os.system(cmd):
該方法在調用完shell腳本后,返回一個信號代碼。
>>> os.system('md5sum /root/all.sql') 7735d611ebce91ebb4c7acc4747a8b67 /root/all.sql 0 #返回的信號代碼 0(成功)
os.popen(cmd):
這種調用方式是通過管道的方式來實現,函數返回一個file-like的對象,里面的內容是腳本輸出的內容(可簡單理解為echo輸出的內容)。使用os.popen調用腳本的情況:
如:
>>> md5_value = os.popen('md5sum /root/all.sql') #將結果賦值給變量 >>> print(type(md5_value)) #查看類型 <class 'os._wrap_close'> >>> print(md5_value.read().split()[0]) #取值 7735d611ebce91ebb4c7acc4747a8b67
明顯地,像調用”ls”這樣的shell命令,應該使用popen的方法來獲得內容