17.1 subprocess
這個(gè)模塊允許你產(chǎn)生子線程,連接他們(主線成,和產(chǎn)生的子線程)之間的輸入/輸出/錯(cuò)誤 管道(pipes蕊程,管道是一種把兩個(gè)進(jìn)程之間的標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出連接起來的機(jī)制扎谎,從而提供一種讓多個(gè)進(jìn)程間通信的方法)。這個(gè)模塊想要替換一些比較舊的模塊和方法:
os.system
os.spawn*
os.popen*
popen2.*
commands.*
17.1.1 使用subprocess
在使用subprocess時(shí)推薦調(diào)用以下幾個(gè)方來完成你的需求宋渔。如果有更高級(jí)的情況,可以使用Popen接口辜限。
subprocess.cell(args, *, stdin=None, stdout=None, stderr=None, shell=False)
根據(jù)args參數(shù)運(yùn)行命令皇拣,等待命令執(zhí)行結(jié)束,返回進(jìn)程返回值
>>>subprocess.call(["ls","-l"])
0
>>>subprocess.call("exit 1",shell=True)
1
subprocess.check_call(args,*,stdin=None,stdout=None,stderr=None,shell=False)
根據(jù)args參數(shù)運(yùn)行命令列粪,等待命令執(zhí)行結(jié)束审磁,如果進(jìn)程返回值為0則返回(return),否則會(huì)raise一個(gè)CalledProcessError錯(cuò)誤岂座,CalledProcessError類的returncode屬性會(huì)包含進(jìn)程返回值态蒂。
>>>subprocess.check_call(["ls","-l"])
0
>>>subprocess.check_call("exit 1",shell=True)
Traceback (most recent call last):
? ? ...
subprocess.CalledProcessError:Command 'exit 1' returned non-zero exit status 1
subprocess.check_output(args,*,stdin=None,stderr=None,shell=False,universal_newlines=False)
正在更新....