2017-02-06 4 views
0

Я новичок в python и наклоняюсь как можно быстрее. Я пытаюсь сравнить два больших текстовых файла, которые не отсортированы, поэтому мне нужно сравнить два пути .i.e. A-B и B-A. Размер файла очень большой, поэтому я пытаюсь использовать хэш-метод.Сравнение больших текстовых файлов Python с использованием haslib

Актуальное требование: 1. Сравните и разделительный текстовый файл .i.e. A-B и B-A. Сравните, как ВПР в Excel 2. запись несоответствующих строк в текстовый файл

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

Код:

from hashlib import sha1 
import csv 

File1 = 'text1.txt' 
File2 = 'text2.txt' 
output = 'output.txt' 

with open(File1, 'r') as ifile: 
     for line in ifile: 
      line = line.rstrip() 
      digest = sha1(line).hexdigest() 

with open(File2, 'r') as ifile1: 
    for line1 in ifile1: 
     line1 = line1.rstrip() 
     digest1 = sha1(line1).hexdigest() 

     writer = csv.writer(open(output, "w")) 
     for i in digest: 
      for xl in digest1: 
       if i[0] == xl[0]: 
        i.append(xl[1:]) 
        writer.writerow(i) 
       digest.seek(0) 

ответ

0

Хеш не предназначен для обнаружения изменений, но для проверки равенства. Каждое изменение бит должно приводить к изменению, по меньшей мере, половины бит хэша.

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

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

Смежные вопросы