W podstawowym miałem następny proces.Jak podzielić plik csv na porcje o równej wielkości w Pythonie?
import csv
reader = csv.reader(open('huge_file.csv', 'rb'))
for line in reader:
process_line(line)
Zobacz ten powiązany question. Chcę wysłać linię procesową co 100 wierszy, aby zaimplementować podział partii.
Problem z zaimplementowaniem powiązanej odpowiedzi polega na tym, że obiekt csv jest nieobsługiwany i nie może używać 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
Jak mogę rozwiązać ten problem?
Problem polega na tym, że subskrybowanie pliku, wymusza odczyt wszystkich wierszy pliku. Jest to bardzo duże użycie plików i pamięci, jeśli to zrobię. –
Piękny, dzięki @TheMYYN :-) –
@Mario: Dodano wersję generatora, która może być szybsza (ale nie miałem czasu, aby przetestować - być może robisz). – miku