Как найти дубликаты в большом 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()

Ответы (0 шт):