Python写入文本文件时最后一条记录丢失,代码无报错求排查
问题分析与解决
错误原因
- 重复打开文件未及时关闭:你在循环内每次都打开
grades3.txt,但没有在循环内关闭文件。文件写入依赖缓冲区刷新,未关闭的文件句柄会导致最后一次写入的内容(betty的成绩)滞留在缓冲区,无法写入磁盘。 - 关闭文件的语法错误:最后一行
file.close缺少括号,正确写法应为file.close(),但即便修正这个,前面重复打开文件的问题依然会引发资源泄漏和数据丢失风险。
正确写法
推荐使用with语句(上下文管理器),它会自动处理文件的打开与关闭,彻底避免缓冲区问题和资源泄漏:
students = ['fred','wilma','barney','betty'] grades = [100,75,80,90] with open("grades3.txt", "a") as file: for name, grade in zip(students, grades): entry = f"{name}-{grade}\n" file.write(entry)
如果坚持沿用原循环结构,需将文件操作移到循环外,并确保正确关闭文件:
students = ['fred','wilma','barney','betty'] grades = [100,75,80,90] file = open("grades3.txt", "a") for i in range(4): entry = students[i] + "-" + str(grades[i]) + '\n' file.write(entry) file.close() # 注意添加括号调用方法
内容的提问来源于stack exchange,提问作者gerald
相关产品推荐
相关产品推荐

