Python游戏JSON存档系统问题:计数器重启后无法保留计数
解决Python计数器无法持久化存储的问题
你的代码存在的核心问题
- 从未修改计数器值:你只是反复读取和写入初始从文件加载的
data,但从头到尾没有对data['part']进行递增操作,所以不管运行多久还是重启程序,值都不会变化。 - 缺少文件容错处理:如果第一次运行时
data.json不存在,程序会直接抛出文件不存在的错误。 - 冗余的IO操作:循环里先写再读的操作完全没必要,既浪费资源又逻辑混乱。
修正后的代码
import json import time # 初始化计数器,处理文件不存在的情况 try: with open("data.json", "r") as read_file: data = json.load(read_file) # 确保数据结构正确,避免文件内容异常 if "part" not in data: data["part"] = 0 except FileNotFoundError: # 文件不存在时创建初始数据 data = {"part": 0} while True: # 真正递增计数器 data["part"] += 1 # 保存更新后的数据到文件 with open("data.json", "w") as write_file: json.dump(data, write_file) # 打印当前计数器值 print(f"当前计数: {data['part']}") time.sleep(1)
关键修正说明
- 添加文件容错:用
try-except捕获FileNotFoundError,第一次运行时自动创建初始的计数器数据。 - 实际修改计数器:在循环里执行
data["part"] += 1,真正更新计数数值。 - 简化IO逻辑:每次递增后直接写入文件,去掉不必要的重复读取操作,提升运行效率。
- 数据结构校验:检查
data中是否存在part键,避免文件内容损坏导致程序出错。
内容的提问来源于stack exchange,提问作者Luka22r
相关产品推荐
相关产品推荐

