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
相关产品推荐
相关产品推荐

