使用如下代码将一个dict变量保存为json
import json
...
with open('filename.json', 'w') as f:
f.write(json.dumps(dict, ensure_ascii=False, indent=4, separators=(',', ':')))
直接读取报错
f = open('filename.json','r')
dict = json.load(f)
...
json.decoder.JSONDecodeError: Extra data: line 88719 column 5 (char 1195065)
打开之前保存的json文件,查看保存的88719行
88706 ...
88707 "xxx_1.jpg":[
88708 0,
88709 0,
88710 3,
88711 475
88712 ],
88713 "xxx_2.jpg":[
88714 0,
88715 0,
88716 6,
88717 375
88718 ]
88719 } 468
88720 ]
88721 }
发现在字典的右括号'}'之外还有多余的字符,因此可以通过删除第一个'}'之后的内容来解决:
with open('filename.json', 'r', encoding = 'utf8') as f:
content = f.read()
content = content.split('}')[0]+'}'
with open('filename.json', 'w') as f:
f.write(content)
经过后处理的文件用json.load()就不会报错了
另:后来发现是一开始多进程程序写入同一个文件导致冲突,出现了上面的多余字符。因此多进程写入保存文件,要么进程汇总之后一起写入,要么各个进程写入不同名文件,再后处理读取汇总