1.原理
subprocess:中文意思是子進(jìn)程寡夹。通過popen創(chuàng)建子進(jìn)程题篷,通過為PIPE主進(jìn)程和子進(jìn)程提供數(shù)據(jù)交換。
PIPE管道:介紹
https://blog.csdn.net/skyroben/article/details/71513385
2.popen參數(shù)介紹
args:子進(jìn)程運(yùn)行的命令将宪,必須要是string類型的过椎。
stdout,stderr,stdin,標(biāo)準(zhǔn)的數(shù)據(jù)傳輸。一般是將PIPE賦值給這三個(gè)參數(shù)荸频。
datastdout,datastderr = communicate()返回子進(jìn)程的標(biāo)準(zhǔn)輸出客冈,標(biāo)準(zhǔn)錯(cuò)誤輸出旭从,阻塞主進(jìn)程,直到子進(jìn)程執(zhí)行完成。
3.調(diào)用cmd 運(yùn)行 ping www.baidu.com命令
import? subpocess
cmd = “ping www.baidu.com”"
ret = subprocess.popen(cmd,stdout =subprocess.PIPE )
實(shí)際應(yīng)用中經(jīng)常會(huì)發(fā)現(xiàn)阻塞和悦。(阻塞表現(xiàn)什么樣的呢退疫?阻塞什么?)
stdoutdata = ret.communicate()[0]
實(shí)際上返回結(jié)果為b"xxxxxxx",因?yàn)榉祷亟Y(jié)果為一個(gè)byte,decode()轉(zhuǎn)換一下就可以了鸽素。
rsult = stdoutdata.decode("utf-8)
將返回結(jié)果由list轉(zhuǎn)換為str類型
print(result).