Python CSV Writer始终跳过最后15-30行问题求助
问题解决:CSV文件末尾行丢失
你的问题根源是文件未正确关闭,导致内存缓冲区的剩余数据未写入磁盘。Python文件写入默认采用缓冲机制,直接open文件后未关闭时,程序结束前部分数据可能还留在内存缓冲区,没同步到磁盘,就出现了末尾行丢失的情况。
修复方案1:使用with语句(推荐)
with语句会自动在代码块结束后关闭文件,确保所有数据都写入磁盘:
import csv with open("one_hot_encoded.csv", 'w', newline='') as f: writer = csv.writer(f) counter = 0 for row in data: counter += 1 writer.writerow([counter, row]) print(counter)
注:添加newline=''是csv模块官方推荐写法,可避免Windows系统下生成额外空行。
修复方案2:手动关闭文件
若不想用with,需手动调用close()方法确保缓冲区数据写入磁盘:
import csv f = open("one_hot_encoded.csv", 'w', newline='') writer = csv.writer(f) counter = 0 for row in data: counter += 1 writer.writerow([counter, row]) f.close() # 必须调用此方法,触发缓冲区数据写入磁盘 print(counter)
计数器显示正确的原因
计数器仅统计循环执行次数,说明writerow确实被调用,但数据只是写入了内存缓冲区,未同步到磁盘文件,因此文件中看不到这些行。
内容的提问来源于stack exchange,提问作者darmstadt beste
相关产品推荐
相关产品推荐

