2017-04-07 161 views
0

我正在嘗試批量讀取csv文件並通過一些回調來處理批處理。python批量讀取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 - 一切正常。

回答

4

如果行數不能被batch_size除以產生餘數,則您的條件count >= batch_size不會變成最後幾行的True

因此,您需要手動清除最後一批/餘數。您只需將這樣的事情後,for循環:

if batch: 
    do_something(batch) 

這將再次撥打您的功能,萬一最後幾排已經被累積到batch(其中你的循環已經這樣做,因爲它遍歷所有行提供) 。