Так что мне нужно сравнить два больших набора файлов данных, в частности аудиофайлы друг против друга, чтобы увидеть, есть ли на коленях. Каждый набор данных - 50 000+ файлов. Итак, что я сделал, создается список основных файлов для чтения python, затем мой скрипт открывает каждый файл, запускает хэш в файле и добавляет его в set(). Тогда я вижу, пересекаются ли эти два множества. Довольно просто, хотя вычислительное время длительное, но не вызывает беспокойства по этой проблеме.MD5 хеширование с hashlib производит несоответствия
Теперь, чтобы проверить свой сценарий, я решил скопировать две папки с аудио в них в двух разных местах на моей локальной машине и запустить мой скрипт и посмотреть, может ли он понять, что две папки одинаковы. Мой код:
hasher = hashlib.md5()
with open("/Users/tcrha/Desktop/Music/hashmaster.txt") as inFile:
for line in inFile:
nline = line.strip('\n')
print nline
with open(nline) as handle:
buf = handle.read()
hasher.update(buf)
print hasher.hexdigest()
with open("/Users/tcrha/Downloads/Music/hashmaster.txt") as inFile:
for line in inFile:
nline = line.strip('\n')
print nline
with open(nline) as handle:
buf = handle.read()
hasher.update(buf)
print hasher.hexdigest()
Выход:
/Users/tcrha/Desktop/Music/Voodoo Glow Skulls/Band Geek Mafia/04 They Always Come Back.mp3
61a89ad11775654a0c469973bc3afc4a
/Users/tcrha/Downloads/Music/Voodoo Glow Skulls/Band Geek Mafia/04 They Always Come Back.mp3
ba5cbe0137dcebebd344942196e2fd5a
Как вы можете видеть оба хэша разные, даже думал, что они такие же файл. Теперь, когда я запускаю команду MD5, я получаю правильный вывод.
MD5 (/Users/tcrha/Desktop/Music/Voodoo Glow Skulls/Band Geek Mafia/04 They Always Come Back.mp3) =
61a89ad11775654a0c469973bc3afc4a
MD5 (/Users/tcrha/Downloads/Music/Voodoo Glow Skulls/Band Geek Mafia/04 They Always Come Back.mp3) =
61a89ad11775654a0c469973bc3afc4a
Что соответствует выходному сигналу первого блока кода в моем сценарии. Я что-то делаю неправильно.
Вы продолжаете обновлять один и тот же «хэш» в своих двух блоках. Если вы используете два разных 'хэша ', я подозреваю, что вы получите тот же результат. – Dannnno