subprocess模塊源碼介紹
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比個(gè)舊網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式個(gè)舊網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋個(gè)舊地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。介紹
subprocess生成新的進(jìn)程,連接input/output管道,并獲取返回碼.
常用函數(shù) |
subprocess.run() | 執(zhí)行指定命令完成并返回一個(gè)包含執(zhí)行結(jié)果的CompletedProcess類的實(shí)例。. |
---|---|---|
call() | 執(zhí)行指定的命令,返回命令執(zhí)行狀態(tài) | |
check_call() | 執(zhí)行指定的命令,如果執(zhí)行成功則返回狀態(tài)碼,否則拋出異常 | |
check_output() | 執(zhí)行指定的命令,如果執(zhí)行狀態(tài)碼為0則返回命令執(zhí)行結(jié)果,否則拋出異常 | |
getoutput(cmd) | 接收字符串格式的命令,執(zhí)行命令并返回執(zhí)行結(jié)果 | |
getstatusoutput(cmd) | 執(zhí)行cmd命令,返回一個(gè)元組(命令執(zhí)行狀態(tài),命令執(zhí)行結(jié)果輸出) | |
參數(shù)說明
subprocess.CompletedProcess類介紹
表示的是一個(gè)已結(jié)束進(jìn)程的狀態(tài)信息.包含屬性如下:
示例
In [2]: subprocess.run(["ls","-l"])
-rw-r--r-- 1 liyuanjie liyuanjie 1350 12月 15 18:33 wireshark.md
Out[2]: CompletedProcess(args=['ls', '-l'], returncode=0)
In [3]: subprocess.run(["ls","-l","/dev/null"],stdout=subprocess.PIPE)
Out[3]: CompletedProcess(args=['ls', '-l', '/dev/null'], returncode=0, stdout=b'
crw-rw-rw- 1 root root 1, 3 12\xe6\x9c\x88 15 07:51 /dev/null\n')
- call()
In [4]: subprocess.call(['ls','-l'])
In [5]: subprocess.call('ls -l',shell=True)
In [6]: subprocess.call(['ls','-l'],stdout=subprocess.DEVNULL)
Out[6]: 0
In [7]: subprocess.call(['ls','-l','/services'])
- check_call()
In [9]: subprocess.check_call(['ls','-l'])
In [10]: subprocess.check_call('ls -l',shell=True)
In [11]: subprocess.check_call('ls -l /services',shell=True)
- check_output()
In [12]: ret = subprocess.check_output(['ls','-l'])
In [13]: print(ret) 返回的是字節(jié)序列.
In [14]: ret = subprocess.check_output(['ls','-l'],universal_newlines=True)
In [15]: print(ret) 返回的是字符串.
- getoutput()與getstatusoutput()
In [16]: ret = subprocess.getoutput('ls -l')
In [17]: print(ret)
正確情況下:
In [18]: retcode,output = subprocess.getstatusoutput('ls -l')
In [19]: print(retcode)
0
In [20]: print(output)
錯(cuò)誤情況下:
In [21]: retcode,output = subprocess.getstatusoutput('ls -l /test')
In [22]: print(retcode)
2
In [23]: print(output)
ls: cannot access '/test': No such file or directory
該類用于在一個(gè)新的進(jìn)程中執(zhí)行一個(gè)子程序.由于subprocess模塊底層的進(jìn)程創(chuàng)建和管理是由Popen類來處理的. 可以通過subprocess.Popen類提供的靈活的api來完成.
Popen的構(gòu)造函數(shù)
參數(shù)說明
Popen類的實(shí)例可調(diào)用的方法
Popen.poll() | 檢查命令是否已經(jīng)執(zhí)行結(jié)束. |
---|---|
wait(timeout=None) | 等待子進(jìn)程結(jié)束,返回狀態(tài)碼. |
communicate() | 與進(jìn)程進(jìn)行交互. |
send_signal(signal) | 發(fā)送指定的信號(hào)給這個(gè)子進(jìn)程 |
terminate() | 停止該子進(jìn)程. |
kill() | 殺死該子進(jìn)程. |
示例
In [25]: p = subprocess.Popen('df -hT',stdout=subprocess.PIPE,shell=True)
In [26]: print(p.stdout.read())
In [2]: p1 = subprocess.Popen(['df','-Th'],stdout=subprocess.PIPE)
In [3]: p2 = subprocess.Popen(['grep','dev'],stdin=p1.stdout,stdout=subprocess.PIPE)
In [4]: out,err = p2.communicate()
In [5]: print(out)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站名稱:subprocess源碼解讀-創(chuàng)新互聯(lián)
當(dāng)前URL:http://muchs.cn/article4/cocpoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、Google、企業(yè)網(wǎng)站制作、網(wǎng)站營銷、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容