Я передаю большое количество данных, которые необходимо обработать порциями из-за отсоединения от источника до завершения. Я хотел бы добавлять элементы в набор до тех пор, пока len(set)
не станет равным некоторому числу, скажем 1000. Как только оно достигнет 1000, я бы хотел записать содержимое этого набора в файл CSV для хранения. После написания я хотел бы очистить набор и продолжить добавление элементов, пока процесс не будет завершен. Поскольку конец коллекции, вероятно, не является набором длиной даже 1000, я также хотел бы записать последний набор любого размера <1000 в CSV. </p>
Я пробовал следующее:
import csv
chunk = set()
for result in source:
if len(chunk) <= 1000:
chunk.add(element)
elif len(chunk) == 1000:
with open('file.csv', 'a') as csvfile:
writer = csv.writer(csvfile)
for element in chunk:
row = [element]
writer.writerow(row)
else:
with open('file.csv', 'a') as csvfile:
writer = csv.writer(csvfile)
for element in chunk:
row = [element]
writer.writerow(row)
Моя логика заключается в том, что я буду добавлять элементы в набор до тех пор, пока len(set)
не станет 1000, а затем напишу его в CSV. Если ни одно из условий не выполняется, я хочу также записать его в CSV. К сожалению, при выполнении ничего не пишется, и я полагаю, что это может иметь какое-то отношение к потенциально конфликтующим операторам if
и else
.