[英]python batch reading of csv file
我正在尝试批量读取csv文件并通过一些回调处理该批处理。
import csv
with open('file.csv', 'r') as csvfile:
reader = csv.reader(csvfile)
header = next(reader) # skip header
batch_size = 3
batch = []
count = 0
for row in reader:
if count >= batch_size:
do_something(batch)
batch = []
count = 0
batch.append(row)
count += 1
假设CSV文件有10行(没有标题),并且batch_size为3 。 预期结果应为4批次。 3批3行,第4批仅包含1行。 我编写的代码仅产生3批。 如果批次大小为1/2/5/10,则一切正常。
如果行数不能被batch_size
而不产生余数,则最后几行的条件count >= batch_size
不会变为True
。
因此,您需要手动清除最后一批/余数。 只需在for循环后添加如下内容:
if batch:
do_something(batch)
万一最后几行已累积到batch
,这将再次调用您的函数(循环已遍历所有行,您的循环已执行此操作)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.