Python修改best_score.txt保存游戏最高分失败,文件为空或内容不变怎么解决?
问题原因
你写入最高分的代码存在两处核心错误:
- 变量引用错误:写入代码中的
f是open()方法返回的文件操作对象,不是你读取到的文件内容字符串,对文件对象调用replace()方法完全不符合预期,要么直接抛出异常,要么生成无效内容,最终写入文件的数据自然是错的。 - 逻辑冗余错误:你的
best_score.txt仅存储单个分数字符串,完全不需要做查找替换操作,直接覆盖写入新的最高分即可,额外的替换逻辑完全是多余的。
修复方案
1. 读取最高分代码优化
先处理第一次运行游戏时文件不存在的边界情况,避免直接读取抛出异常:
try: with open("best_score.txt", "r") as f: # 加strip()去掉文件中可能存在的换行、空格等冗余字符 best = int(f.read().strip()) except FileNotFoundError: # 首次运行无存储文件时,默认最高分设为0 best = 0 old_best = best
2. 写入最高分代码修复
不需要做替换操作,直接把最新的最高分转成字符串覆盖写入即可:
# 满足写入条件时执行 if score == best: with open("best_score.txt", "w") as f: f.write(str(best))
其他可选实现方式
如果后续你需要存储更多结构化数据(比如不同难度的最高分、玩家昵称),可以用Python内置的json模块实现,不需要手动处理字符串解析:
写入示例:
import json save_data = { "best_score": best, "difficulty": "hard" } with open("score_data.json", "w") as f: json.dump(save_data, f)
读取示例:
import json try: with open("score_data.json", "r") as f: save_data = json.load(f) best = save_data["best_score"] except (FileNotFoundError, json.JSONDecodeError): best = 0
内容的提问来源于stack exchange,提问作者user17034852
相关产品推荐
相关产品推荐

