Comment vous répartissez vous lire un gros fichier csv dans uniformément gros morceaux de taille en Python?

Dans une base, j'avais le processus suivant.

import csv
reader = csv.reader(open('huge_file.csv', 'rb'))

for line in reader:
    process_line(line)

Voir ce question. Je veux envoyer le processus en ligne, toutes les 100 lignes, de mettre en œuvre lot de fragmentation.

Le problème au sujet de la mise en œuvre de la relative réponse est que csv objet est unsubscriptable et ne peuvent pas utiliser len.

>>> import csv
>>> reader = csv.reader(open('dataimport/tests/financial_sample.csv', 'rb'))
>>> len(reader)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type '_csv.reader' has no len()
>>> reader[10:]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '_csv.reader' object is unsubscriptable
>>> reader[10]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '_csv.reader' object is unsubscriptable

Comment puis-je résoudre ce problème?

OriginalL'auteur Mario César | 2011-02-10