【发布时间】:2019-04-17 14:57:09
【问题描述】:
我正在尝试跟踪我的 csv.writer 正在写入的行数。
在运行代码时,len(list(reader) 标识了正确的行数,如果 under 100,编写器继续插入 2 个新行,这一切都很好,但在第一个循环之后,len(list(reader) 总和为 0 行导致一个无限循环。我认为这是一个内存问题,因为编写器似乎在最后写入内存并刷新到磁盘,但刷新文件或重新创建读取器实例无济于事。
import csv
import time
row = [('test', 'test2', 'test3', 'test4'), ('testa', 'testb', 'testc', 'testd')]
with open('test.csv', 'r+', newline='') as csv_file:
writer = csv.writer(csv_file)
while True:
# moved reader inside loop to recreate its instance had no effect
reader = csv.reader(csv_file, delimiter=';')
num = len(list(reader))
if num <= 100:
print(num)
writer.writerows(row)
csv_file.flush() # flush() had no effect
time.sleep(1)
else:
print(num)
break
如何让len(list(reader) 随时跟踪文件内容?
【问题讨论】: