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

如何将每行一个JSON文档的12GB大文件转换为单个JSON列表?

你当前使用的是行式JSON(JSON Lines)格式,要转换为标准JSON数组,且文件大小为12GB,优先选择流式处理方案(不需要加载整个文件到内存),可落地的实现方案如下:

方案1:Linux/macOS 命令行实现(最高效,优先推荐)

全程流式处理,内存占用不超过10MB,处理12GB文件耗时仅取决于磁盘读写速度,普通机械硬盘预计10-20分钟即可完成。

操作步骤

  1. 先向输出文件写入JSON数组的开头标识符
    echo "[" > output.json
  2. 流式处理原文件的每一行:每行前面加3个空格、末尾加逗号,最后一行去掉末尾的逗号,追加到输出文件
    sed 's/^/ /;s/$/,/' input.jsonl | sed '$ s/,$//' >> output.json
  3. 最后写入JSON数组的结尾标识符
    echo "]" >> output.json
方案2:跨平台Python实现(兼容Windows环境)

全平台通用,自动跳过空行,内存占用极低,适合没有命令行工具的场景使用。

INPUT_FILE = "你的原文件路径.jsonl"
OUTPUT_FILE = "输出文件路径.json"
INDENT = "   "  # 对应示例里的3空格缩进,不需要缩进可设置为空字符串

with open(OUTPUT_FILE, "w", encoding="utf-8") as out_f:
    out_f.write("[\n")
    first_line = True
    with open(INPUT_FILE, "r", encoding="utf-8") as in_f:
        for line in in_f:
            stripped_line = line.strip()
            if not stripped_line:
                continue
            if not first_line:
                out_f.write(",\n")
            out_f.write(f"{INDENT}{stripped_line}")
            first_line = False
    out_f.write("\n]")
注意事项
  • 处理前请提前备份原文件,避免操作失误导致数据丢失
  • 若原文件存在不符合JSON格式的行,可先使用jq工具做数据清洗:jq -c . input.jsonl > cleaned_input.jsonl,该命令会过滤掉所有不合法的JSON行,仅保留格式正确的内容
  • 处理前请确保目标磁盘预留至少13GB的空闲空间,避免输出文件写入时磁盘占满导致任务失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:45:03