天天看點

python 執行shell_Python腳本執行Shell指令

歡迎,來自IP位址為:180.122.153.228 的朋友

Python是一款非常出色的腳本語言,越來越多的系統管理者開始使用Python将日常工作自動化。

由于系統管理工作多為執行Linux指令,通過Python腳本來執行系統指令對于管理者來說幫助巨大。

本教程将示範使用Python腳本來執行Shell指令的并獲得指令執行結果的兩種方法。

使用Python的os子產品來執行Shesll指令

我們首先建立一個Python腳本”prog.py”,然後在腳本中添加如下内容:

import os

myCmd = 'ls -la'

os.system(myCmd)

腳本首先引入os子產品,然後定義一下Shell指令字元串,最後使用os子產品的system方法執行該指令。系統輸出内容會同樣通過該方法回顯給使用者。執行示意圖如下:

python 執行shell_Python腳本執行Shell指令

執”prog.py”的輸出結果同執行”ls -la”指令的結果是一緻的,表示該指令已經成功執行。

當然,如果想将輸出内容重定向到檔案中,對于腳本内容修改如下:

import os

myCmd = 'ls -la > out.txt'

os.system(myCmd)

當然,這并不是通過Python腳本進行的輸出重定向,而是利用了Shell本身的功能。

對于指令字元串的定義,也可以采用如下方式:

import os

myCmd = os.popen('ls -la').read()

print(myCmd)

以上腳本的輸出結果同之前腳本的輸出結果是一緻的。

使用Python的subprocess子產品來執行Shesll指令

一個相對比較輕量級的執行Shell指令的方法是使用subprocess子產品。

如果僅僅執行Shell指令而不使用任何選項和參數,則可以采用如下方式執行指令:

import subprocess

subprocess.call("ls")

如果執行的指令含有參數或選項,那麼需要将指令和選項以如下方式置于連結清單中供”subprocess.call”方法調用:

import subprocess

subprocess.call(["ls", "-l", "."])

最後,如果想将輸入内容重定向,可以使用不同于Shell重定向的方法,由”subprocess”子產品自行完成。首先使用子產品的Popen函數,産生一個輸出對象,然後使用該對象的”communicate()”擷取對應輸出内容,最後将結果列印出來。示例代碼如下:

import subprocess

MyOut = subprocess.Popen(['ls', '-l', '.'],

stdout=subprocess.PIPE,

stderr=subprocess.STDOUT)

stdout,stderr = MyOut.communicate()

print(stdout)

print(stderr)

python 執行shell_Python腳本執行Shell指令

可以看到,程式輸出了标準輸出和标準錯誤的内容(None),并且全部輸出重定向是由腳本自行完成。

以上就是Python腳本執行Shell指令的兩種方法。