1. 程式人生 > >python學習之-subprocess模組(子程序模組)

python學習之-subprocess模組(子程序模組)

什麼是程序

一個程式執行起來了就是一個程序

但是程式本身不是程序,程式是一對程式碼而已

所以程序就是一個抽象的概念,就是程式執行起來的一個過程

程序和程序之間是相互獨立的,互不影響

如何理解子程序和父程序

抽象的說一個QQ程式是一個父程序,word就是一個子程序,兩個互不干預,當然這只是一個比喻

subprocess模組的用途

讓父程序從管道內獲取子程序執行的結果

 

呼叫格式(這個模組的呼叫時一個固定的格式)

import subprocess

obj=subprocess.Popen(

   'tasklasdfist', #第一個引數是一個字串形式的命令

   shell=True, #第二個引數是呼叫命令直譯器(如呼叫cmd)

   stdout=subprocess.PIPE, #第三個引數stdout是指標準輸出,輸出的物件就是subrocess.PIPE(管道)

   stderr=subprocess.PIPE   #第四個引數stderr是指錯誤輸出,輸出的物件就是subrocess.PIPE(管道)

)

res=obj.stdout.read()  #從正確管道內讀取結果 (obj是一個特殊的物件,這個特殊的物件下面可以呼叫一個srdout(對應的就是正確的管道)下呼叫一個read
print(res.decode('gbk'))  #根據系統的編碼進行解碼讀取


res=obj.stderr.read() #這是從錯誤管道內獲取結果
print(res.decode('gbk'))

PS:管道的概念,什麼是管道,可以想象成生活中的管道,作用就是因為程序和程序之間是相互隔離的,無法傳播資料,所以用管道可以把子程序和父程序關聯起來

PS:管道內讀取的結果是以系統的編碼格式返回的二進位制字元,所以在列印時候需要根據系統的編碼進行解碼