python 多设备同时安装app包
上代码
1 #!/usr/bin/env python 2 # -*- encoding: utf-8 -*- 3 import os 4 import time 5 from multiprocessing import Pool 6 list=[] 7 8 def getDevicesAll(): 9 #获取devices数量和名称 10 devices = [] 11 try: 12 for dName_ in os.popen("adb devices"): 13 if "\t" in dName_: 14 if dName_.find("emulator") < 0: 15 devices.append(dName_.split("\t")[0]) 16 devices.sort(cmp=None, key=None, reverse=False) 17 print(devices) 18 except: 19 pass 20 print(u"\n设备名称: %s \n总数量:%s台" % (devices, len(devices))) 21 return devices 22 23 def quickinstall(device): 24 packagename="com.ishugui" 25 #卸载原有apk 26 try: 27 28 os.system('adb -s ' + device + ' uninstall %s'%packagename) 29 os.system('adb -s ' + device + ' uninstall %s'%packagename) 30 print(device + " 卸载成功\n") 31 except: 32 print(device + " 卸载失败\n") 33 34 try: 35 print('-----list-----',list) 36 37 for i in list: 38 os.system('adb -s ' + device + ' install ' + i) 39 40 except: 41 print(device + " 安装失败\n") 42 print(device + " 安装成功\n") 43 44 def qainstall(devices,): 45 starttime=time.time() 46 pool = Pool(2) #创建8个任务池 47 result=pool.map(quickinstall,devices) 48 endtime=time.time() 49 pool.close() 50 pool.join() 51 print(endtime-starttime) #打印时间 52 53 def get_apk(filename): 54 global list 55 #filesname = 'F:/download/apk' 56 #获取安装包 57 print(filesname) 58 for parent, dirnames, filnames in os.walk(filesname): 59 for filname in filnames: 60 path = os.path.join(parent, filname) 61 list.append(path) 62 print('-----list-----', list) 63 return list 64 65 #包路径 66 filesname = 'F:/download/apk' 67 #获取安装包 68 print(filesname) 69 for parent, dirnames, filnames in os.walk(filesname): 70 for filname in filnames: 71 path = os.path.join(parent, filname) 72 list.append(path) 73 print('-----list-----', list) 74 75 76 if __name__ == "__main__": 77 78 filesname = 'F:/download/apk' 79 list=get_apk(filesname) 80 81 try: 82 devices = getDevicesAll() 83 except: 84 print("获取设备出错") 85 res = input("输入1开始更新:") 86 87 if int(res) == 1: 88 try: 89 qainstall(devices) 90 except: 91 print("更新失败") 92 #Touch(devices)