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腳本后,返回一個信號代碼。

>>> 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的方法來獲得內容


免責聲明!

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



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