本篇文章給大家分享的是有關(guān)怎么在Python中使用Subprocess解析不同的函數(shù),小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)專(zhuān)注于秦州企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站定制開(kāi)發(fā)。秦州網(wǎng)站建設(shè)公司,為秦州等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)subprocess.call()
執(zhí)行由參數(shù)提供的命令.
我們可以用數(shù)組作為參數(shù)運(yùn)行命令,也可以用字符串作為參數(shù)運(yùn)行命令(通過(guò)設(shè)置參數(shù)shell=True)
注意,參數(shù)shell默認(rèn)為False
我們用subprocess.call()來(lái)做一個(gè)統(tǒng)計(jì)磁盤(pán)的例子:
subprocess.call(['df', '-h'])
下面的例子把shell設(shè)置為T(mén)rue
subprocess.call('du -hs $HOME', shell=True)
注意,python官方文檔里對(duì)參數(shù)shell=True陳述了一個(gè)警告:
Invoking the system shell with shell=True can be a security hazard if combined with untrusted input
現(xiàn)在,我們來(lái)看看輸入與輸出
Input and Output
subprocess 模塊能阻止輸出,當(dāng)你不關(guān)心標(biāo)準(zhǔn)輸出的時(shí)候是非常方便的.
它也使你通過(guò)一種正確的方式管理輸入/輸出,有條理地整合python腳本中的的shell命令.
Return Codes
通過(guò)subprocess.call的返回值你能夠判定命令是否執(zhí)行成功.
每一個(gè)進(jìn)程退出時(shí)都會(huì)返回一個(gè)狀態(tài)碼,你可以根據(jù)這個(gè)狀態(tài)碼寫(xiě)一些代碼。
stdin, stdout and stderr
在使用subprocess 時(shí),有一個(gè)微妙的部分是怎么使用管道把命令連接起來(lái).
管道表明一個(gè)新的子管道應(yīng)該被創(chuàng)建.
默認(rèn)的設(shè)置為None,意味著沒(méi)有重定向發(fā)生
標(biāo)準(zhǔn)錯(cuò)誤可以指向標(biāo)準(zhǔn)輸出,表明子進(jìn)程的錯(cuò)誤信息會(huì)被捕獲到和標(biāo)準(zhǔn)輸出同一個(gè)文件.
subprocess.Popen()
subprocess 模塊中基本的進(jìn)程創(chuàng)建和管理由Popen 類(lèi)來(lái)處理.
subprocess.popen是用來(lái)替代os.popen的.
我們來(lái)做一些真實(shí)的例子,subprocess.Popen需要一個(gè)數(shù)組作為參數(shù):
import subprocess p = subprocess.Popen(["echo", "hello world"], stdout=subprocess.PIPE) print p.communicate() >>>('hello world ', None)
注意,雖然你可以使用 "shell=True",但并不推薦這樣的方式.
如果你知道你只用幾個(gè)有限的函數(shù),比如Popen和PIPE,你可以單單指定這幾個(gè)函數(shù):
from subprocess import Popen, PIPE p1 = Popen(["dmesg"], stdout=PIPE) print p1.communicate()
Popen.communicate()
communicate()函數(shù)返回一個(gè)tuple(標(biāo)準(zhǔn)輸出和錯(cuò)誤).
Popen.communicate() 和進(jìn)程溝通:發(fā)送數(shù)據(jù)到標(biāo)準(zhǔn)輸入.從標(biāo)準(zhǔn)輸出和錯(cuò)誤讀取數(shù)據(jù)直到遇到結(jié)束符.等待進(jìn)程結(jié)束.
輸入?yún)?shù)應(yīng)該是一個(gè)字符串,以傳遞給子進(jìn)程,如果沒(méi)有數(shù)據(jù)的話(huà)應(yīng)該是None.
基本上,當(dāng)你用 communicate()函數(shù)的時(shí)候意味著你要執(zhí)行命令了.
用subprocess寫(xiě)Ping程序
我們先問(wèn)用戶(hù)地址,然后用ping請(qǐng)求這個(gè)地址.
# Import the module import subprocess # Ask the user for input host = raw_input("Enter a host to ping: ") # Set up the echo command and direct the output to a pipe p1 = subprocess.Popen(['ping', '-c 2', host], stdout=subprocess.PIPE) # Run the command output = p1.communicate()[0] print output
以上就是怎么在Python中使用Subprocess解析不同的函數(shù),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
分享題目:怎么在Python中使用Subprocess解析不同的函數(shù)-創(chuàng)新互聯(lián)
瀏覽地址:http://aaarwkj.com/article12/jscdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站維護(hù)、用戶(hù)體驗(yàn)、網(wǎng)站策劃、商城網(wǎng)站、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
移動(dòng)網(wǎng)站建設(shè)知識(shí)