subprocess 模塊能阻止輸出,當你不關(guān)心標準輸出的時(shí)候是非常方便的.
原文出處:https://segmentfault.com/a/1190000009176351
輸入參數應該是一個(gè)字符串,以傳遞給子進(jìn)程,如果沒(méi)有數據的話(huà)應該是None.我們先問(wèn)用戶(hù)地址,然后用ping請求這個(gè)地址.
Return Codes通過(guò)subprocess.call的返回值你能夠判定命令是否執行成功.
其他參考文章,Python模塊subprocess:https://www.cnblogs.com/sunailong/p/5162748.htm
subprocess.call(['df', '-h'])下面的例子把shell設置為T(mén)rue
我們能從Python官方文檔里讀到應該用subprocess 模塊來(lái)運行系統命令.subprocess模塊允許我們創(chuàng )建子進(jìn)程,連接他們的輸入/輸出/錯誤管道,還有獲得返回值。注意,python官方文檔里對參數shell=True陳述了一個(gè)警告:
以前我一直用os.system()處理一些系統管理任務(wù),因為我認為那是運行linux命令最簡(jiǎn)單的方式.
from subprocess import Popen, PIPEp1 = Popen(["dmesg"], stdout=PIPE)print p1.communicate()Popen.communicate()
communicate()函數返回一個(gè)tuple(標準輸出和錯誤).
注意,雖然你可以使用 "shell=True",但并不推薦這樣的方式.
我們來(lái)做一些真實(shí)的例子,subprocess.Popen需要一個(gè)數組作為參數:
Invoking the system shell with shell=True can be a security hazard if combined
如果你知道你只用幾個(gè)有限的函數,比如Popen和PIPE,你可以單單指定這幾個(gè)函數:
現在,我們來(lái)看看輸入與輸出
# Import the moduleimport subprocess# Ask the user for inputhost = raw_input("Enter a host to ping: ") # Set up the echo command and direct the output to a pipep1 = subprocess.Popen(['ping', '-c 2', host], stdout=subprocess.PIPE)# Run the commandoutput = p1.communicate()[0] print output
Popen.communicate() 和進(jìn)程溝通:發(fā)送數據到標準輸入.從標準輸出和錯誤讀取數據直到遇到結束符.等待進(jìn)程結束.
注意,參數shell默認為False
subprocess.Popen()
subprocess 模塊中基本的進(jìn)程創(chuàng )建和管理由Popen 類(lèi)來(lái)處理.
我們可以用數組作為參數運行命令,也可以用字符串作為參數運行命令(通過(guò)設置參數shell=True)
subprocess.call()
執行由參數提供的命令.
基本上,當你用 communicate()函數的時(shí)候意味著(zhù)你要執行命令了.
我在使用subprocess 時(shí),有一個(gè)微妙的部分是怎么使用管道把命令連接起來(lái).
默認的設置為None,意味著(zhù)沒(méi)有重定向發(fā)生
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站