這個方法是直接呼叫標準C的system() 函數,僅在一個子終端機執行系統指令,而無法取得指令執行後的回傳資訊。
os.system(cmd)的回傳值。如果執行成功,那麼會回傳0,表示指令執行成功。否則,則是執行錯誤。
使用os.system傳回值是腳本的退出狀態碼,方法在調用完shell腳本後,傳回一個16位的二進位數,低位為殺死所呼叫腳本的訊號號碼,高位為腳本的退出狀態碼。
os.system()回傳值為0 linux指令回傳值也是0。
os.system()傳回值為256,十六位二進位數顯示為:00000001,00000000,高八位元轉成十進位為 1 對應 linux指令回傳值 1。
os.system()傳回值為512,十六位二進位數顯示為:00000010,00000000,高八位元轉成十進位為 2 對應 linux指令回傳值 2。
import os result = os.system('cat /etc/passwd') print(result) # 0
os.popen()方法不僅執行命令而且返回執行後的信息對象(常用於需要獲取執行命令後的返回信息),是透過一個管道文件將結果傳回。透過 os.popen() 返回的是 file read 的對象,對其進行讀取 read() 的操作可以看到執行的輸出。
import os result = os.popen('cat /etc/passwd') print(result.read())
import commands status = commands.getstatus('cat /etc/passwd') print(status) output = commands.getoutput('cat /etc/passwd') print(output) (status, output) = commands.getstatusoutput('cat /etc/passwd') print(status, output)
Subprocess是一個功能強大的子程序管理模組,是替換os.system,os.spawn* 等方法的一個模組。
當執行指令的參數或傳回中包含了中文文字,那麼建議使用subprocess。
import subprocess res = subprocess.Popen('cat /etc/passwd', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) # 使用管道 print res.stdout.read() # 标准输出 for line in res.stdout.readlines(): print line res.stdout.close() # 关闭
以上是Python怎麼呼叫系統指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!