Python—執行系統命令的四種方法(os.system、os.popen、commands、subprocess)


一、os.system方法

這個方法是直接調用標准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()方法不僅執行命令而且返回執行后的信息對象(常用於需要獲取執行命令后的返回信息),是通過一個管道文件將結果返回。通過 os.popen() 返回的是 file read 的對象,對其進行讀取 read() 的操作可以看到執行的輸出。

import os
result = os.popen('cat /etc/passwd')
print(result.read())

三、commands模塊

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模塊

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()         # 關閉

五、總結:

os.system:獲取程序執行命令的返回值。

os.popen: 獲取程序執行命令的輸出結果。

commands:獲取返回值和命令的輸出結果。

https://www.jb51.net/article/142787.htm


免責聲明!

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



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