使用jq和Python拆分JSON为独立文件时脚本无限运行问题
问题原因与修复方案
核心问题根源
- Python语法中不存在
++前置自增运算符,你写的++i等价于+(+i),仅会对i做两次正数运算,不会修改i的实际值,导致i永远等于0,i <= 100的循环条件永远成立,因此进入死循环,不会停止运行。 - 额外逻辑问题:原JSON只有100个对象,索引范围为0~99,循环条件写
i <= 100会多生成一个内容为null的100.json无效文件。
最小改动修复方案
仅调整自增语句和循环条件即可解决死循环问题,修正后代码如下:
import os i = 0 while i < 100: os.system(f"cat _metadata.json | jq '.[{i}]' > {i}.json") i += 1
更优实现方案
无需依赖系统的cat、jq命令,直接用Python原生json库处理,执行效率更高、无外部依赖、跨平台可用:
import json # 读取原JSON文件 with open("_metadata.json", "r", encoding="utf-8") as f: data = json.load(f) # 遍历拆分写入单个文件 for idx, item in enumerate(data): with open(f"{idx}.json", "w", encoding="utf-8") as f: json.dump(item, f, ensure_ascii=False, indent=2)
内容的提问来源于stack exchange,提问作者Ben K。
相关产品推荐
相关产品推荐

