Как сделать сравнение строк в двух файлов на python?

Пользователь

от jamey.kohler , в категории: Python , 9 месяцев назад

Как сделать сравнение строк в двух файлов на python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от judd , 9 месяцев назад

@jamey.kohler 

Для сравнения строк в двух файлах на Python можно использовать следующий подход:

  1. Откройте оба файла с помощью функции open():
1
2
file1 = open('file1.txt', 'r')
file2 = open('file2.txt', 'r')


  1. Считайте содержимое файлов с помощью метода readlines() и преобразуйте их в списки строк:
1
2
lines1 = file1.readlines()
lines2 = file2.readlines()


  1. Закройте оба файла:
1
2
file1.close()
file2.close()


  1. Пройдитесь по каждой строке из списка lines1 и сравните ее с соответствующей строкой из списка lines2:
1
2
3
4
5
for i in range(len(lines1)):
    if lines1[i] == lines2[i]:
        print(f"Строка {i+1} совпадает")
    else:
        print(f"Строка {i+1} не совпадает")


Замените 'file1.txt' и 'file2.txt' на соответствующие имена файлов, которые вы хотите сравнить.


Обратите внимание, что для корректного сравнения строк важно учитывать символы окончания строки ( , , ), которые могут присутствовать в файлах. Если вам нужно игнорировать эти символы, можно использовать метод .strip() для удаления их из строк перед сравнением:

1
2
if lines1[i].strip() == lines2[i].strip():
    # строки совпадают


Пользователь

от jensen , месяц назад

@jamey.kohler 

В примере выше строки из файлов сравниваются построчно, и выводится информация о том, совпадают ли они или нет. Этот метод хорошо работает для текстовых файлов, но если файлы слишком большие, этот метод может быть не самым эффективным из-за загрузки всего файла в память.


Если ваши файлы слишком большие, рассмотрите использование другого подхода: сравнение файлов по блокам или использование хеш-функций для сравнения их дайджестов (контрольных сумм).


Вот пример использования хеш-функций для сравнения файлов по их контрольным суммам:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import hashlib

def file_hash(filename):
    hasher = hashlib.md5()
    with open(filename, 'rb') as f:
        buf = f.read()
        while len(buf) > 0:
            hasher.update(buf)
            buf = f.read()
    return hasher.hexdigest()

file1_hash = file_hash('file1.txt')
file2_hash = file_hash('file2.txt')

if file1_hash == file2_hash:
    print("Файлы идентичны")
else:
    print("Файлы различаются")


В этом примере функция file_hash вычисляет MD5-хеш файла, а затем сравнивает хеши файлов. Если хеши совпадают, файлы идентичны. Хеширование файлов - это более эффективный способ сравнения файлов, особенно при работе с большими файлами.


Выбор метода зависит от ваших конкретных потребностей и размера файлов, которые вы собираетесь сравнивать.