我试图批量读取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 - 一切都还可以。
答案 0 :(得分:6)
如果行数不能除count >= batch_size
而不产生余数,则最后几行的True
条件不会变为batch_size
。
因此,您需要手动清除最后一批/剩余部分。只需在for循环后添加这样的内容:
if batch:
do_something(batch)
这将再次调用你的函数,以防最后几行累积到batch
(你的循环已经完成,因为它遍历所有可用的行)。