python經常被稱作「膠水語言」,因為它能夠輕易地操作其他程式,輕易地包裝使用其他語言編寫的庫。今天我們就講解其中的乙個方面,用python呼叫shell命令。
用python呼叫shell命令有如下幾種方式:
os.system("the command you want").
這個呼叫相當直接,且是同步進行的,程式需要阻塞並等待返回。返回值是依賴於系統的,直接返回系統的呼叫返回值,所以windows和linux是不一樣的。
os.popen(command[,mode[,bufsize]])
先給大家看個例子
可以看出,popen方法通過p.read()獲取終端輸出,而且popen需要關閉close().當執行成功時,close()不返回任何值,失敗時,close()返回系統返回值. 可見它獲取返回值的方式和os.system不同。
根據你需要的不同,commands模組有三個方法可供選擇。getstatusoutput, getoutput, getstatus。
但是,如上三個方法都不是python推薦的方法,而且在python3中其中兩個已經消失。python文件中目前全力推薦第四個方法,subprocess!
subprocess使用起來同樣簡單:
直接呼叫命令,返回值即是系統返回。shell=true表示命令最終在shell中執行。python文件中出於安全考慮,不建議使用shell=true。建議使用python庫來代替shell命令,或使用pipe的一些功能做一些轉義。官方的出發點是好的,不過真心麻煩了很多, so....
如果你更關注命令的終端輸出,可以這樣
同樣很簡單。
python 介面程式設計 並執行sh命令
usr bin python coding utf 8 from tkinter import 匯入 tkinter 庫 import thread import time import os class messageshow def init self 傳入引數 訊息內容 和這條訊息顯示的時間 ...
Python 教程 6 模組
如果你從python直譯器退出並再次進入,之前的定義 函式和變數 都會丟失。因此,如果你想編寫乙個稍長些的程式,最好使用文字編輯器為直譯器準備輸入並將該檔案作為輸入執行。這被稱作編寫 指令碼 隨著程式變得越來越長,你或許會想把它拆分成幾個檔案,以方便維護。你亦或想在不同的程式中使用乙個便捷的函式,而...
執行sh指令碼中的export對終端無效
當在乙個終端shell中執行乙個sh指令碼,本質是建立乙個子程序來執行sh指令碼中的命令,當執行export時,變數加入子程序的環境變數 而非父程序shell 當指令碼執行結束,子程序銷毀.返回父程序,父程序的環境變數沒有任何變化.應該 source name.sh 若希望嵌入linux啟動時加入的...