用python写一个小程序用来获取系统内应用的版本号,最终导出到excel里之优化

第22篇上在写这个小工具时还没有学会openpyxl的用法,关于最终写到excel里的部分是直接使用了同事的封装方法,后面发现用openpyxl简直太简单了,openpyxl模块功能强大,在此推荐一篇博客,个人认为这篇博客已经写得内容很详尽,奉上连接:https://www.cnblogs.com/pinpin/p/10471732.html
以下为优化后的代码:

import os
import time
import re
from openpyxl import Workbook

class MyError(Exception): #自定义异常
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return repr(self.value)

class Get_Version():
    def __init__(self,ip): #连接adb
        os.popen('adb disconnect') #断开跟其他设备的连接
        os.popen('adb kill-server') #关闭adb服务
        if re.match(r'((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))',ip).group()==ip:            
            return_value=os.popen('adb connect %s'%ip).read()
            print(return_value)
            if ('connected to %s'%ip) in return_value:
                print('adb connected successfully!,you can continue!') #如果adb连接失败,抛出异常
            else:
                raise MyError('请检查输入的ip地址是否和本电脑在同一网段,或者需要启动调试设备的adb')  #如果adb连接失败,抛出异常
        else:
            raise MyError('ip输入错误,请检查')
    def get_path(self): #作为excel保存的路径
        self.path=os.getcwd()+r'\APP_VERSION'
        if not os.path.isdir(self.path):
            os.makedirs(self.path)
        return self.path
    def get_sheet_name(self):
        self.rel=os.popen('adb shell getprop |findstr rel')
        self.rel=self.rel.read()
        self.rel=re.search(r'\[ro\.build\.version\.release\]\:\s\[(.*)\]',self.rel).group(1) #用固件版本号作为sheet页名称
        return self.rel
    def app_list_version(self): #获取应用版本号列表
        data=os.popen('adb shell pm list package')
        data=data.read()
        app_list=data.split('\n')
        self.result=[['包名','Version','VersionCode']]
        for i in app_list:
            if i[:8]=='package:':
                temp=[]
                version=os.popen('adb shell dumpsys package %s|findstr version '%i[8:])
                version=version.read()
                version=version.split()
                for j in range(len(version)):
                    if len(temp) <2 and bool(re.match(r'version',version[j])) is True: #只获取最新的应用版本号,限制len(mid)最长为2
                        temp.append(version[j].split('=')[1])
                temp.append(i[8:])
                temp.reverse()
                self.result.append(temp)
        return self.result    
    def creat_excel_by_openpyxl(self):
        wb=Workbook()  #生成一个excel
        ws=wb.active #操作当前sheet页
        ws.title=self.rel
        # 调整列宽
        ws.column_dimensions['A'].width = 40
        ws.column_dimensions['B'].width = 40
        ws.column_dimensions['C'].width = 40
        for i in self.result:
            ws.append(i)
        excel_name = '%s\\%s.xlsx' % (self.path,time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())))
        wb.save(excel_name)
        print('excel create successully')
        return None
if __name__=='__main__':
    a=Get_Version('192.168.1.152') #将自己要连接的ip写入
    a.get_path()
    a.get_sheet_name()
    a.app_list_version()
    a.creat_excel_by_openpyxl()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值