You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从日志文件中提取含'message'行后的字节行并分组存储

解决方法

你当前的代码只使用了一维列表存储数据,所以所有匹配的字节行都会被存入同一个列表,只需要改为使用二维列表存储,每次遇到包含message的行时新建一个独立的子列表存储对应字节行即可,同时修正你代码里的变量名笔误和文件资源释放问题。

修改后的完整代码

def analyse_file(self,file_name):
    result = []  # 二维列表,每个元素对应一个message行的字节列表
    # 使用with上下文管理器自动关闭文件,避免资源泄漏
    with open(file_name, 'r', encoding = "latin-1") as input_file:
        file_lines = input_file.readlines()
        for i in range(len(file_lines)):
            if "message" in file_lines[i]:
                current_list = []  # 新建当前message对应的独立子列表
                # 遍历当前message行之后的所有内容
                for j in range(i+1, len(file_lines)):
                    m = file_lines[j].split()
                    # 增加空行判断,避免空行split后取m[0]报错
                    if not m or len(m[0]) != 6:
                        break
                    # 修正原代码的变量名笔误:log_file_lines改为file_lines
                    byte_line = file_lines[j].strip()  # 可去掉strip保留原始行尾换行符
                    current_list.append(byte_line)
                # 只把非空的子列表加入结果,过滤匹配到message后无字节行的空列表
                if current_list:
                    result.append(current_list)
    return result

调用示例

# 调用方法后得到的是包含所有子列表的二维数组
all_lists = your_object.analyse_file("你的日志文件路径.log")
list1 = all_lists[0]
list2 = all_lists[1]
list3 = all_lists[2]
# 后续可分别对每个列表做解码处理

内容的提问来源于stack exchange,提问作者It Engineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:12:00