背景:查看一個(gè)項(xiàng)目的代碼,python獲取連接到電腦的設(shè)備列表時(shí),發(fā)現(xiàn)用到了os.popen和subprocess?故作簡(jiǎn)單了解和實(shí)踐
一、os.popen、os.system
1、os.system? 返回命令執(zhí)行狀態(tài)碼,而將命令執(zhí)行結(jié)果輸出到屏幕;執(zhí)行成功返回值為0
os.popen ? 返回 的是文件的對(duì)象?
>>> print os.system('adb devices')
List of devices attached
06157df6e2d18e3cdevice
0 #返回值為0
2、os.popen()可以獲取命令執(zhí)行結(jié)果,無法獲取命令執(zhí)行狀態(tài)碼;返回值是一個(gè)文件,后續(xù)可對(duì)文件進(jìn)行讀取
>>> print os.popen('adb devices')
<open file 'adb devices', mode 'r' at 0x1075cf5d0>??
>>>?
3、os.popen().readlines()繼續(xù)讀取文件
>>> print(os.popen("adb devices").readlines())
['List of devices attached\n', '06157df6e2d18e3c\tdevice\n', '\n']
二、subprocess :New in version 2.4.
subprocess.getstatusoutput:執(zhí)行命令后返回一個(gè)元組(命令執(zhí)行狀態(tài), 命令執(zhí)行結(jié)果輸出)
>>> subprocess.getstatusoutput("adb devices")
(0, 'List of devices attached\n06157df6e2d18e3c\tdevice\n')
英文文檔:https://docs.python.org/2/library/subprocess.html
詳細(xì)學(xué)習(xí)可參考文章:http://www.cnblogs.com/yyds/p/7288916.html