Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
29 / 1 / 1
Регистрация: 30.08.2013
Сообщений: 37

Быстрое побайтовое сравнение бинарных файлов

24.02.2016, 12:34. Показов 5581. Ответов 6
Метки нет (Все метки)

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

Вся проблема в том, как максимально быстро осуществить побайтовое сравнение файлов (бинарных)?
Я пошел по такому пути - сначала ищем по размеру, потом найденное проверяем на совпадения хеша, если нет - значит файл уникален и его копируем без дальнейших вопросов... А вот если есть - уже надо читать и подробно смотреть что и как. Я пошел по наиболее простому пути - считываем два файла в списки и побайтово их сравниваем до первого расхождения (если такое вообше будет). В принципе - работает, но долго. Может есть способ сделать это быстрее (например, сравнивать не байты а слова и т.п.) ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2016, 12:34
Ответы с готовыми решениями:

Сравнение бинарных файлов
В общем задача такая: открыть 2 бинарных файла и,если так можно вообще, циклом+ветвлением сравнить каждый 16-ичный коды и ,если они не...

Побайтовое сравнение 2 файлов
Ребят , кто может написать хороший для побайтового сравнения 2 любых файлов ? Хочу посмотреть как это должно выглядеть. Заранее спасибо...

Побайтовое сравнение файлов.
Работу произвожу в консольной среде. Задача реализовать побайтовое сравнение 2-ух файлов (по типу команды *nux cmp ), основное тело...

6
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.02.2016, 12:49
filecmp?
0
29 / 1 / 1
Регистрация: 30.08.2013
Сообщений: 37
24.02.2016, 13:07  [ТС]
У меня нет уверености, что filecmp.cmp() осуществляет сравнение именно по содержимому, а не хешу или чему-то в этом роде (при сравнении картинок не раз получал одинаковые хеши у разных файлов). Если такая инфа есть, киньте плиз ссылку.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
24.02.2016, 13:53
Цитата Сообщение от Erik945 Посмотреть сообщение
при сравнении картинок не раз получал одинаковые хеши у разных файлов
Так не надо использовать какой нибудь md5, используй какой нибудь новый и более совершенный алгоритм хеширования и все будет в порядке.
0
29 / 1 / 1
Регистрация: 30.08.2013
Сообщений: 37
24.02.2016, 18:05  [ТС]
Обижаешь, SHA-512!
Можно конечно заморочиться с WHIRLPOOL, но тут уже накладные расходы на создание хеша могут перевесить выгоду.
0
Эксперт Pascal/Delphi
 Аватар для mmm_corp
103 / 91 / 32
Регистрация: 30.05.2015
Сообщений: 594
24.02.2016, 19:23
хм... питон думаю не лучшый вариант, возможно стоить поискать внешнее решение
0
29 / 1 / 1
Регистрация: 30.08.2013
Сообщений: 37
26.02.2016, 00:34  [ТС]
Решил cppшной вставкой через swig - выигрыш получился солидный.
Возникла следующая проблема. В сишном модуле в консоль выдается некий текст. Когда я просто запускаю скрипт - все прекрасно, но когда я перенаправляю выходной поток в файл (>>), текст из питона пишется, а из модуля - нет. Выдавать пробовал через fprint и cout.

Добавлено через 12 минут
upd новые вводные, они все-таки пишутся, но не на тех итерациях и за несколько последних вызовов. Похоже идет буфферизация сишного потока, и при заполнении буффера он вываливает все значения чохом. Как бороться?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2016, 00:34
Помогаю со студенческими работами здесь

Побайтовое сравнение файлов
Всем доброго времени суток. Написал небольшую программу для побайтового сравнения двух файлов: FileStream.Read'ом циклически считываются...

Побайтовое сравнение двух файлов
Здравствуйте, снова возник вопрос. как сравнить два файла побайтно, в идеале совпадения нужно выделить) но я пока хочу просто сравнить их...

Побайтовое сравнение двух текстовых файлов
Доброго времени суток! помогите с задачей не знаю че сделать) Создать два текстовых файла. Сделать побайтово сравнение этих файлов....

Сравнение бинарных файлов
Здравствуйте. Сначала теоретический вопрос, мне необходимо отслеживать изменился файл или нет, тип файла может быть абсолютна различным....

Быстрое сравнение файлов на сервере и у юзера
Добрый день! На текущий момент на сервере лежит xml с хешами файлов. Файл качается, берутся хеши файлов и сравниваются с хешами в xml....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru