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

如何使用Python脚本合并同一文件夹内的多个JSONL文件

JSONL多文件合并Python实现方法

首先你需要先安装jsonlines依赖库,执行命令:
pip install jsonlines

原有针对标准JSON文件的脚本不适用于JSONL格式的核心原因:

  • 标准JSON是单个完整的JSON结构,可一次性读取为单个对象;但JSONL(JSON Lines)的特性是每行对应一个独立的JSON对象,不能直接用json.load读取整个文件
  • 原有逻辑用append会把单个文件的所有内容作为一个元素加入结果,合并后结构不符合预期,需要改为逐行读取对象后追加

方案1:内存友好版(大文件适用,边读边写)

该方案无需将所有文件内容加载到内存,适合处理GB级别的大体积JSONL文件:

import glob
import jsonlines

# 合并后输出的文件路径
output_path = "merged_file.jsonl"

with jsonlines.open(output_path, mode="w") as outfile:
    # 遍历当前文件夹下所有后缀为.jsonl的文件,可自行修改匹配规则
    for f in glob.glob("*.jsonl"):
        with jsonlines.open(f, mode="r") as infile:
            # 逐行读取JSON对象直接写入输出文件
            for entry in infile:
                outfile.write(entry)

方案2:全量加载版(适合小文件,需要预处理数据的场景)

如果需要先把所有数据加载到内存做清洗、去重等操作,可使用该版本:

import glob
import jsonlines
import json

result = []
for f in glob.glob("*.jsonl"):
    with jsonlines.open(f, mode="r") as infile:
        # 把当前文件所有JSON对象扩展到结果列表
        result.extend(infile)

# 输出为JSONL格式
with jsonlines.open("merged_file.jsonl", mode="w") as outfile:
    outfile.write_all(result)

# 如果你需要输出为标准JSON数组格式,可替换为下面的输出逻辑
# with open("merged_file.json", mode="w", encoding="utf-8") as outfile:
#     json.dump(result, outfile, ensure_ascii=False, indent=2)

注意事项

  • 如果你的JSONL文件后缀不是.jsonl,修改glob.glob里的匹配规则即可,比如后缀为.json就改为*.json
  • 写入时如果需要保留中文等非ASCII字符,可在jsonlines.open或json.dump中添加ensure_ascii=False参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:27:03