Python調用shell命令常用方法

Python調用shell指令

方法一、使用os模塊的system方法:
os.system(cmd),其返回值是shell指令運行後返回的狀態碼,int類型,0表示shell指令成功執行,256表示未找到,該方法適用於shell命令不需要輸出內容的場景。
舉例說明:
1. 列舉當前目錄下的所有文件。
1 import os
2 val = os.system('ls -al')
3 print val

在這裏插入圖片描述
沒有找到時,sh返回的狀態碼是1,而適用python調用,返回的是:256
在這裏插入圖片描述

方法二、使用os.popen(),
該方法以文件的形式返回shell指令運行後的結果,需要獲取內容時可使用read()或readlines()方法,舉例如下:

在這裏插入圖片描述

在這裏插入圖片描述

方法三、使用commands模塊,有三個方法可以使用:
(1)commands.getstatusoutput(cmd),其以字符串的形式返回的是輸出結果和狀態碼,即(status,output)。
(2)commands.getoutput(cmd),返回cmd的輸出結果。
(3)commands.getstatus(file),返回ls -l file的執行結果字符串,調用了getoutput,不建議使用此方法

在這裏插入圖片描述
在這裏插入圖片描述

方法四、subprocess模塊,允許創建很多子進程,創建的時候能指定子進程和子進程的輸入、輸出、錯誤輸出管道,執行後能獲取輸出結果和執行狀態。
(1)subprocess.run():python3.5中新增的函數, 執行指定的命令, 等待命令執行完成後返回一個包含執行結果的CompletedProcess類的實例。
(2)subprocess.call():執行指定的命令, 返回命令執行狀態, 功能類似os.system(cmd)。
(3)subprocess.check_call():python2.5中新增的函數, 執行指定的命令, 如果執行成功則返回狀態碼, 否則拋出異常。
說明:subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False, universal_newlines=False)	
 subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)
subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False, timeout=None)
args:表示shell指令,若以字符串形式給出shell指令,如"ls -l "則需要使shell = Ture。否則默認已數組形式表示shell變量,如"ls","-l"。
	當使用比較複雜的shell語句時,可以先使用shlex模塊的shlex.split()方法來幫助格式化命令,然後在傳遞給run()方法或Popen。

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章