Python操作JSON文件:新增字典键值对并将修改结果写入本地文件
问题原因与修复方案
根因分析
- 所有对
data字典的修改都只发生在内存层面,全程没有执行序列化写回本地文件的操作,因此本地test.json的内容不会自动同步变更。 - 原代码未使用上下文管理器管理文件句柄,还存在句柄泄漏、文件流偏移的隐性风险。
标准实现(推荐)
采用读、写分离的流程,彻底规避文件流位置异常问题:
import json # 读取本地JSON内容到内存 with open("test.json", "r", encoding="utf-8") as f: data = json.load(f) # 修改内存中的字典对象 data["d"] = ["fourth letter"] print(data) # 将修改后的完整字典写回本地文件 with open("test.json", "w", encoding="utf-8") as f: json.dump(data, f, indent=2, ensure_ascii=False)
不推荐的r+模式写法
如果强行沿用原代码的r+读写同流模式,需要额外处理指针偏移、旧内容截断逻辑,很容易出现内容错位、残留旧字符串的问题,示例仅作参考:
import json with open("test.json", "r+", encoding="utf-8") as f: data = json.load(f) data["d"] = ["fourth letter"] f.seek(0) # 把文件指针移到文件起始位置 json.dump(data, f) f.truncate() # 清除指针位置后残留的旧文件内容
注意:操作JSON文件时建议显式指定
encoding="utf-8",避免跨系统默认编码差异导致的写入乱码。
内容的提问来源于stack exchange,提问作者Abass Abdul Wahab
相关产品推荐
相关产品推荐

