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

JSON日志文件按timestamp字段升序排序失败,如何排查错误?

错误原因

  • 字典取值语法错误:你写的x['timestamp', '%Y-%m-%d %H:%M:%S']是错误写法,相当于向字典传入了一个('timestamp', '%Y-%m-%d %H:%M:%S')的元组作为键,字典中不存在这个键,必然取值失败。时间格式参数是传给时间解析函数的,不是放在字典的取值括号内。
  • 时间函数使用错误:第一种写法里你用了time.strftime,这个函数的作用是将时间对象格式化为字符串,你要把字符串格式的时间转成可比较的时间对象,应该用time.strptime或者datetime.strptime,函数用反了。
  • 时间格式不匹配:第二种写法里strptime的格式参数只写了%Y-%m-%d,但你的时间字符串带有时分秒,格式完全不匹配,无法正确解析时间。
  • 不必要的重复排序:第一种写法中每次append一条日志就调用一次sort,完全没有必要,等所有日志都加载到列表后排序一次即可,性能更高。

正确实现代码

import json
from datetime import datetime

merged_list = []
# 加载第一个日志文件
with open("第一个日志文件路径.jsonl", "r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        merged_list.append(json.loads(line))
# 加载第二个日志文件
with open("第二个日志文件路径.jsonl", "r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        merged_list.append(json.loads(line))

# 按timestamp升序排序
sorted_list = sorted(merged_list, key=lambda x: datetime.strptime(x['timestamp'], '%Y-%m-%d %H:%M:%S'))

# 如需原地排序可替换为下面的代码
# merged_list.sort(key=lambda x: datetime.strptime(x['timestamp'], '%Y-%m-%d %H:%M:%S'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:45:08