Python 調(diào)用子進(jìn)程是實(shí)現(xiàn)一些高級(jí)應(yīng)用的重要手段,因?yàn)樗梢詥?dòng)操作系統(tǒng)的其他進(jìn)程。換句話(huà)說(shuō),Python 能夠在代碼的不同部分與其他二進(jìn)制工具和腳本語(yǔ)言進(jìn)行交互。
下面是 Python 調(diào)用子進(jìn)程的基本代碼結(jié)構(gòu):
import subprocess cmd = ['ls', '-l'] proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) output = proc.stdout.read() print(output)
在上面的代碼中,我們首先導(dǎo)入了subprocess
模塊以訪問(wèn)允許我們調(diào)用子進(jìn)程的函數(shù)。然后,我們創(chuàng)建了一個(gè)列表對(duì)象cmd
,并將ls -l
命令的程序名和參數(shù)作為其元素。我們通過(guò)Popen
函數(shù)執(zhí)行了該命令。
通過(guò)調(diào)用函數(shù)Popen
,我們啟動(dòng)了在其自己的進(jìn)程空間中運(yùn)行的子進(jìn)程,并返回在本地進(jìn)程空間中用于與其交互的進(jìn)程對(duì)象proc
。為了從子進(jìn)程中捕獲標(biāo)準(zhǔn)輸出,我們?cè)谡{(diào)用中指定了一個(gè)stdout
選項(xiàng)和一個(gè)Pipe
對(duì)象。這條語(yǔ)句告訴 Python:將在子進(jìn)程中生成的任何輸出傳輸?shù)焦艿缹?duì)象中。
然后,我們讀取了proc.stdout
的值,并將其打印出來(lái)。
通過(guò)使用subprocess
模塊以及一些小技巧,我們可以啟動(dòng)其他程序、輕松解析輸出以及在系統(tǒng)上執(zhí)行許多其他有用的進(jìn)程工具。