17.1 subprocess
這個模塊允許你產生子線程,連接他們(主線成,和產生的子線程)之間的輸入/輸出/錯誤 管道(pipes,管道是一種把兩個進程之間的標準輸入和標準輸出連接起來的機制,從而提供一種讓多個進程間通信的方法)。這個模塊想要替換一些比較舊的模塊和方法:
os.system
os.spawn*
os.popen*
popen2.*
commands.*
17.1.1 使用subprocess
在使用subprocess時推薦調用以下幾個方來完成你的需求。如果有更高級的情況,可以使用Popen接口。
subprocess.cell(args, *, stdin=None, stdout=None, stderr=None, shell=False)
根據args參數運行命令,等待命令執行結束,返回進程返回值
>>>subprocess.call(["ls","-l"])
0
>>>subprocess.call("exit 1",shell=True)
1
subprocess.check_call(args,*,stdin=None,stdout=None,stderr=None,shell=False)
根據args參數運行命令,等待命令執行結束,如果進程返回值為0則返回(return),否則會raise一個CalledProcessError錯誤,CalledProcessError類的returncode屬性會包含進程返回值。
>>>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)
正在更新....