python中subprocess.Popen執行命令並持續獲取返回值


先舉一個Android查詢連接設備的命令來看看Python中subprocess.Popen怎么樣的寫法。用到的命令為 adb devices。

  import subprocess

  order='adb devices' #獲取連接設備

  pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)

  print pi.stdout.read()#打印結果


命令的結果返回是一次性的,所以我們用read方法讀取數據是沒有問題的,然而adb命令里還有一些是實時返回結果的,比如輸出手機日志的命令logcat,結果會不斷的打印出來當前的設備操作日志信息內容,這種類型的命令我們在Python中如果需要獲取打印結果,如果還是用read方法的話,等待結果的返回時間會非常長,這里我們就要換一種方法讀取結果,寫法如下。

  import subprocess

  order='adb logcat'

  pi= subprocess.Popen(order,shell=True,stdout=subprocess.PIPE)

  for i in iter(pi.stdout.readline,'b'):

      print i


這樣的打印效果,如同cmd里操作一致,實時的打印出日志信息。這里我們就用到了readline方法和iter()函數,其實這種寫法類似我們讀取文件,單行讀取和全部內容讀取。

 

---------------------------------------------------------------------------------

關注微信公眾號即可在手機上查閱,並可接收更多測試分享~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM