Как найти дубликаты в большом csv файле?
Как найти дубликаты в большом csv файле, который не помещается в ОЗУ? Интересуют способы без разделения файла на части. В моем примере часть строки помещается в set и по условию совпадения дубликаты записываются в отдельный файл. Но в случае, если оперативы будет мало, программа вряд-ли будет работать.
import csv
import time
import sys
def main():
t1 = time.time()
read_file = 'input.csv'
write_file = 'output.csv'
rows = set()
with open(read_file) as in_f, open(write_file, 'w', newline='') as out_f:
reader, writer = csv.reader(in_f), csv.writer(out_f)
for row in reader:
item = ''.join(row[7:14])
if item not in rows:
rows.add(item)
else:
writer.writerow(row)
print(sys.getsizeof(rows))
t2 = time.time()
print(t2 - t1)
if __name__ == "__main__":
main()