Python中os.system和os.popen區別

     Python調用Shell,有兩種方法:os.system(cmd)或os.popen(cmd)腳本執行過程當中的輸出內容。實際使用時視需求狀況而選擇。
python

二者的區別是:sql

  • os.system(cmd)的返回值是腳本的退出狀態碼,只會有0(成功),1,2
  • os.popen(cmd)返回腳本執行的輸出內容做爲返回值

 好比計算一個文件的md5值:shell

os.system(cmd):函數

   該方法在調用完shell腳本後,返回一個信號代碼。spa

>>> os.system('md5sum /root/all.sql')
7735d611ebce91ebb4c7acc4747a8b67  /root/all.sql
0      #返回的信號代碼  0(成功)

os.popen(cmd):code

   這種調用方式是經過管道的方式來實現,函數返回一個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的方法來得到內容blog

相關文章
相關標籤/搜索