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

Python修改分数文件:学生151133分数修改代码无报错却未生效

解决学生分数修改并生成新文件的问题

原代码的问题分析

  • 目标文件打开模式错误:用r+模式打开usoscorelist.txt,如果文件不存在会直接报错,且该模式针对已有文件读写,我们需要创建/覆盖文件,应使用w模式。
  • 文件指针位置错误:写完原文件内容后,指针停在文件末尾,此时遍历secondfile无法读取到任何内容,需调用seek(0)将指针移回开头。
  • 类型错误:replace中直接用数字拼接字符串会触发报错,必须将ID和分数转为字符串形式(如"151133 40")。
  • 未写入修改内容:原代码仅打印了修改后的行,并未将修改结果写入文件;且with语句会自动管理文件关闭,无需手动调用secondfile.close()。

修正后的代码方案

方案一:逐行处理(适合大文件,低内存占用)

with open('scorelist.txt', 'r') as firstfile, open('usoscorelist.txt', 'w') as secondfile:
    for line in firstfile:
        # 检查当前行是否为目标学生的记录,是则修改后写入,否则直接写入原内容
        if line.strip() == '151133 40':
            secondfile.write('151133 100\n')
        else:
            secondfile.write(line)

方案二:整体替换(适合小文件,代码更简洁)

# 读取原文件全部内容
with open('scorelist.txt', 'r') as f:
    content = f.read()

# 替换指定学生的分数记录
updated_content = content.replace('151133 40', '151133 100')

# 将修改后的内容写入新文件
with open('usoscorelist.txt', 'w') as f:
    f.write(updated_content)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:50:31