先舉一個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()函數,其實這種寫法類似我們讀取文件,單行讀取和全部內容讀取。
---------------------------------------------------------------------------------
關注微信公眾號即可在手機上查閱,並可接收更多測試分享~