Python中os.system和os.popen區別
Python調用Shell,有兩種方法:os.system(cmd)或os.popen(cmd)腳本執行過程中的輸出內容。實際使用時視需求情況而選擇。
兩者的區別是:
- os.system(cmd)的返回值是腳本的退出狀態碼,只會有0(成功),1,2
- os.popen(cmd)返回腳本執行的輸出內容作為返回值
比如計算一個文件的md5值:
os.system(cmd):
該方法在調用完shell腳本后,返回一個信號代碼。
1
2
3
|
>>> 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的方法來獲得內容