Python应用程序:从Android日志到Excel文件的智能过滤和输出

import json
import subprocess
import re
import openpyxl

def logcat(excel_path, check_re):
    """
    查看 安卓手机日志信息
    :param excel_path: excel的路径信息,标题行字段
    :param check_re: 过滤当前日志的正则表达式(之后记得优化)
    :return:
    """

    # 打开现有的Excel文件
    workbook = openpyxl.load_workbook(excel_path)  # 替换为您的文件名

    # 选择要读取数据的工作表
    sheet = workbook.active  # 或者使用 sheet = workbook['工作表名称'] 替换 '工作表名称'

    # 读取第一行数据
    first_row_data = []

    for cell in sheet[1]:
        first_row_data.append(cell.value)

    # 清除安卓的日志缓冲区
    subprocess.run("adb logcat -c", shell=True, check=True)

    # 定义adb命令
    adb_command = "adb logcat"

    # 定义匹配JSON的正则表达式模式
    json_pattern = re.compile(r'\{.*\}')

    # 创建一个新的Excel工作簿
    workbook = openpyxl.Workbook()

    # 选择要写入数据的工作表
    sheet = workbook.active

    # 编写要写入的标题行
    sheet.append(first_row_data)

    # 设置单元格列宽度
    sheet.column_dimensions['A'].width = 23  # 设置第一列(A列)的宽度为23
    sheet.column_dimensions['B'].width = 23  # 设置第二列(B列)的宽度为23

    try:
        # 执行adb命令并捕获输出,以字节形式获取输出
        process = subprocess.Popen(adb_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

        # 持续读取日志输出
        while True:
            line_bytes = process.stdout.readline()
            if not line_bytes:
                break
            line = line_bytes.decode('utf-8', errors='ignore').strip()

            # 使用正则表达式检查行是否包含JSON
            match = json_pattern.search(line)
            if match:
                # 如果行包含JSON,提取并打印JSON内容
                json_content = match.group()

                if re.search(check_re, json_content):
                    print(json_content)
                    # 逐行写入数据
                    json_data = json.loads(json_content)

                    temp = []
                    for cell in first_row_data:
                        temp.append(json_data[cell])
                    sheet.append(temp)

        # 等待命令执行完成
        process.wait()

    except Exception as e:
        print(f"{e}")

    finally:
        # 保存工作簿到文件
        workbook.save(excel_path)
        # 关闭工作簿
        workbook.close()

if __name__ == '__main__':
    logcat("example.xlsx", r'status.*orderId_.*')

你可能感兴趣的:(工具,python,android,excel)