You need to enable JavaScript to run this app. Python操作JSON文件:新增字典键值对并将修改结果写入本地文件
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 22:06:03