python批量读取csv文件

时间:2017-04-07 11:14:26

标签: python python-3.x csv

我试图批量读取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 - 一切都还可以。

1 个答案:

答案 0 :(得分:6)

如果行数不能除count >= batch_size而不产生余数,则最后几行的True条件不会变为batch_size

因此,您需要手动清除最后一批/剩余部分。只需在for循环后添加这样的内容:

if batch:
    do_something(batch)

这将再次调用你的函数,以防最后几行累积到batch(你的循环已经完成,因为它遍历所有可用的行)。