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

Python中如何跨文件使用dict并更新共享JSON文件?

解决方法:从JSON文件读取而非直接导入模块变量

这个问题我之前也碰到过!核心问题在于你误解了模块导入和JSON文件数据的关系——直接导入file1.data拿到的是模块加载时的静态变量,不是JSON文件里的最新内容。正确的做法是从JSON文件读取数据,修改后再写回去,具体步骤如下:

第一步:确保file1.py正确写入JSON文件

先检查你的file1.py,确保它把数据正确写入到JSON文件中(比如命名为users.json):

import json

# 初始化数据
data = {
    "user1": "xyz",
    "user2": "abc"
}

# 写入JSON文件,用with语句确保文件正确关闭
with open("users.json", "w") as f:
    json.dump(data, f, indent=4)  # indent=4让JSON格式更易读

第二步:在file2.py中读取、修改、写回JSON文件

不要直接导入file1.data,而是从JSON文件读取现有数据,添加新用户后再写回去:

import json

# 读取JSON文件中的现有数据
try:
    with open("users.json", "r") as f:
        data = json.load(f)
except FileNotFoundError:
    # 如果文件不存在(比如file1还没运行过),初始化空字典
    data = {}

# 添加新用户
data["user3"] = "qwe"
data["user4"] = "rty"

# 将更新后的数据写回JSON文件
with open("users.json", "w") as f:
    json.dump(data, f, indent=4)

为什么之前的导入方式不行?

当你在file2.py里执行import file1时,Python会加载file1模块并执行其中的代码,但模块只会被加载一次——也就是说,你拿到的file1.data是模块加载时的初始值(只有user1和user2),它和JSON文件里的内容没有实时关联。哪怕你后来修改了JSON文件,导入的file1.data也不会自动更新。

额外注意事项

  • 用with语句操作文件是最佳实践,它会自动帮你关闭文件,避免资源泄漏
  • 加入try-except处理文件不存在的情况,防止脚本直接报错崩溃
  • 如果有多个进程同时读写这个JSON文件,可能会出现数据冲突,这种情况建议用数据库或者更安全的文件锁机制,但单进程脚本不用考虑这个

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:21:22