Python批量读取CSV文件

3
我正在尝试批量读取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行(没有标题),批处理大小为3。预期结果应该是4个批次。前3个批次有3行,第四个批次只包含1行。 我编写的代码只能生成3个批次。如果批处理大小为1/2/5/10,则一切正常。
1个回答

6

如果行数不能被批次大小整除,就会出现最后几行不满足条件count >= batch_size的情况。

因此,你需要手动清除最后一批/余数。在for循环之后添加以下内容:

if batch:
    do_something(batch)

如果最后几行已经累积到batch中(这是您的循环已经完成的操作,因为它遍历了所有可用的行),那么这将再次调用您的函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接