hus*_*s88 2 python csv python-3.x
我正在尝试批量读取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
Run Code Online (Sandbox Code Playgroud)
假设CSV文件有10行(没有标题),而batch_size是3.预期结果应为4批次.3批次,3行,第4批次只包含1行.我写的代码只产生3批.如果批量大小为1/2/5/10 - 一切正常.
你的病情count >= batch_size不会成为True最后几排的情况下,行数不能被分割batch_size而不产生的余数.
因此,您需要手动清除最后一批/剩余部分.只需在for循环后添加这样的内容:
if batch:
do_something(batch)
Run Code Online (Sandbox Code Playgroud)
这将再次调用您的函数,以防累积最后几行batch(您的循环已经执行,因为它遍历所有可用行).
| 归档时间: |
|
| 查看次数: |
2339 次 |
| 最近记录: |