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

Python读取游戏高分txt文件时内容被清空的原因与修复方案

问题原因与修复方案

问题原因

  • 文件打开模式错误:使用w+模式打开文件时,会直接清空原有文件内容,导致程序启动后读取到的是空字符串,执行int(highscore)时就会触发invalid literal for int() with base 10:错误。
  • 方法调用错误:Python的文件对象没有replace()方法,代码里的hisc.replace(str(score))无法实现写入新高分的功能。

修复方案

修正思路

  1. 避免使用w+模式,改用先读取(r模式)再写入(w模式)的分离逻辑,防止清空文件内容。
  2. 处理文件不存在的边界情况(首次运行时),避免报错。
  3. 读取文件内容时去除空白字符,防止换行、空格干扰整数转换。

修正后的代码

# 初始化最高分
highscore_in_no = 0

# 读取历史最高分
try:
    with open("snakeScore.txt", "r") as hisc:
        highscore = hisc.read().strip()
        if highscore:  # 确保读取到有效内容
            highscore_in_no = int(highscore)
except FileNotFoundError:
    # 首次运行文件不存在时,创建文件并写入初始最高分
    with open("snakeScore.txt", "w") as hisc:
        hisc.write(str(highscore_in_no))

# 更新最高分逻辑
if score > highscore_in_no:
    with open("snakeScore.txt", "w") as hisc:
        hisc.write(str(score))
    highscore_in_no = score

关键修复点说明

  • 使用with语句管理文件:自动完成文件关闭操作,避免资源泄漏。
  • 捕获FileNotFoundError:处理首次运行无文件的场景,自动初始化文件内容。
  • 读取时调用strip():去除内容中的换行、空格等空白字符,确保整数转换正常。
  • 分离读写操作:先读取历史数据,再根据比较结果决定是否写入新数据,彻底避免清空原有内容的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:31:24