Я пытаюсь создать скрипт на python, который выводит сходства 2 разных файлов в третий файл.Я понимаю, что есть простой способ сделать это, проверяя каждую строку в обоих файлах, используя вложенные циклы for, но я предпочел не делать этого, потому что я пытаюсь заставить его работать как можно быстрее.Это потому, что я работаю с полужесткими файлами (по 100-200 МБ каждый), и проверка каждой строки в обоих файлах займет гораздо больше времени, чем я наткнулся на следующую:
Быстрая альтернатива, которую я нашел, это импорт mmap.и использование функции .find () для проверки каждой строки в первом файле
import mmap
import time
RESULTS = open('sims.txt', 'w')
f1 = open('file1.txt', 'r')
f = open('file2.txt')
f2 = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
for line1 in f1:
if len(line1) > 3:
if f2.find(line1) != -1:
RESULTS.write(line1)
RESULTS.close()
f1.close()
Этот метод очень быстр при чтении второго файла и не содержит синтаксических ошибок, но просто не работает должным образом,Вот пример file1.txt и file2.txt
file1:
orange
hotdog
pig
file2:
apple
mango
orange
pig
hotdog
Вывод должен быть оранжевым и хотдогом на sims.txt, но sims.txt всегда пуст.Пожалуйста, дайте мне знать, если есть способ исправить это или лучший способ сделать это, сохраняя при этом скорость функции find (), или это просто невозможно.Спасибо!
(PS Я только начал изучать Python 2-3 дня назад, поэтому вполне возможно, что я совершил простую ошибку)