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

Python批量加载大量JSON文件报UnicodeDecodeError问题求助

核心报错原因

你猜测的「加载文件数量过多」不是问题根因,当前报错是文件编码不匹配导致的,和打开文件数无关。
你在Windows环境下调用open()读取文件时没有手动指定编码,Python会默认使用系统的cp1252编码解码文件内容,但你处理的JSON文件基本都是UTF-8编码(绝大多数公开JSON数据集默认编码),当文件里出现cp1252编码表不存在的字符时就会直接抛出解码错误终止程序——你刚好跑到第80个左右的文件时碰到了这类特殊字符,所以程序停在这。

自行排查优化方向(按优先级排序,可直接搜对应关键词找方案)
  • 优先解决编码报错:检索关键词 Python open 函数 encoding参数、Python 读取文件 UnicodeDecodeError,核心修改点是给读取JSON文件的open()方法传入正确的编码参数;针对个别编码异常的坏文件,还可以配置errors参数选择跳过/替换异常字符,避免单个文件问题打断全量处理任务。
  • 解决严重性能问题:你当前的写法每写一行CSV数据就会重新打开、关闭一次目标CSV文件,处理百万级文件时IO开销会非常大,整体耗时会高到难以接受。检索关键词 Python csv.writer 批量写入、Python with 语句作用域,把CSV文件的打开操作移到所有文件遍历循环的最外层,整个任务全程只打开一次CSV文件,所有数据写完后再统一关闭,处理速度能提升几十到上百倍。
  • 增加坏文件容错逻辑:50万-100万量级的文件里必然混有损坏的JSON、字段缺失的异常文件,当前写法碰到这类文件会直接崩溃终止。检索关键词 Python try except 异常捕获,给单个文件的处理逻辑加异常捕获,碰到坏文件时记录对应文件名和错误原因后直接跳过,不要中断整体任务。
  • 可选速度优化:如果调整完上述逻辑后还是觉得处理速度慢,可以检索关键词 Python 多进程 批量处理文件,用多进程并行解析JSON,处理速度还能提升数倍,注意多进程同时写CSV时要加写入锁,避免内容写乱。
现有代码非核心瑕疵(不触发当前报错,可后续调整)
  • InReplyToScreenName != "null"的判断逻辑有误:如果JSON里该字段是真正的空值,Python解析后会得到None类型,不是字符串"null",当前判断无法正确识别空值场景。
  • 取RetweetedStatus、User这类嵌套字段时没有做判空,如果某条数据缺失对应嵌套字段,.get()拿到None后继续调用.get()会抛出属性错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 20:09:34