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

Поиск одинаковых по содержанию файлов

22.06.2020, 21:13. Показов 7828. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте

Помогите, пожалуйста, написать программу, которая на вход получает путь к папке, а на выходе возвращает сгруппированные названия одинаковых по содержанию файлов.
На выходе должен получиться словарь, где ключом будет хэш файла, а значением массив имен файлов. Раньше с файлами и хэшами не работал. Почитал, конечно, кое-что в сети, но дальше, чем получить список файлов по указанному пути и вычислить хэш конкретного файла не продвинулся.
Python
1
2
3
def filesList(dir):
    files = os.listdir(dir)
    return files
Python
1
2
3
4
5
6
7
8
9
def get_hash_md5(file):
    with open(file, 'rb') as f:
        m = hashlib.md5()
        while True:
            data = f.read(8192)
            if not data:
                break
            m.update(data)
        return m.hexdigest()
Поэтому прошу помощи у сообщества.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2020, 21:13
Ответы с готовыми решениями:

Поиск одинаковых по их содержанию файлов в двух каталогах
Ребят помогите реализовать. Я новичок в линуксе, а задачу надо сдать уже в понедельник. Буду очень благодарен. Написать командный...

Поиск файлов по их содержанию
Поставлена задача: Ввести фразу в программе. Программа перебирает все файлы на диске, открывает и ищет в них введенную фразу. Эсли...

Поиск по содержанию присоединенных файлов
Нужен поиск по содержанию приаттаченных файлов (doc и txt). Как это организовать?

4
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
22.06.2020, 21:30
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import os
import hashlib
 
def get_hash_md5(file):
    with open(file, 'rb') as f:
        m = hashlib.md5()
        while True:
            data = f.read(8192)
            if not data:
                break
            m.update(data)
        return m.hexdigest()
 
 
dct ={}
 
files = os.listdir() # в скобках путь к папке
for file in files:
    key = get_hash_md5(file)
    dct[key] = dct.get(key, []) + [file]
 
print(dct)
вроде так. проверить не судьба, нет папки с одинаковым содержанием в файлах
0
5 / 5 / 1
Регистрация: 11.11.2019
Сообщений: 143
Записей в блоге: 2
23.06.2020, 08:36  [ТС]
Просто создал папку Temp в корне С и в ней 4 текстовых файла (3 с одинаковым содержимым). Указал путь к ней в скрипте. Выдает ошибку: FileNotFoundError: [Errno 2] No such file or directory: '1.txt'. По указанному пути к папке такой файл есть (ставил print в цикле, нашел 4 файла, все ок). Ругается на строку
Python
1
with open(file, 'rb') as f:
и на
Python
1
key = get_hash_md5(file)
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
23.06.2020, 18:09
Лучший ответ Сообщение было отмечено Baumanetc как решение

Решение

Цитата Сообщение от Baumanetc Посмотреть сообщение
with open(file, 'rb') as f:
вы же пытаетесь прочитать файл по имени а питон не знает что этот файл находиться в корне с в папке temp поэтому ищет в той папке откуда запущен скрипт. тут нужен полный путь к файлу. что то я это упустил вчера.

Python
1
2
3
4
5
6
7
8
9
dct ={}
path = f'C:\Temp' # путь к папке
files = os.listdir(path) 
for name in files:
    file = f'{path}\{name}'
    key = get_hash_md5(file)
    dct[key] = dct.get(key, []) + [name]
 
print(dct)
1
5 / 5 / 1
Регистрация: 11.11.2019
Сообщений: 143
Записей в блоге: 2
24.06.2020, 09:34  [ТС]
Лучший ответ Сообщение было отмечено DobroAlex как решение

Решение

Огромное спасибо, Semen-Semenich. Все получилось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2020, 09:34
Помогаю со студенческими работами здесь

Поиск файлов Word по содержанию определенной строки
Необходимо произвести поиск файлов WORD по содержанию определенной строки. Установлен word 2007 так что Word.Application.FileSearch не...

Проверка строк на равенство по содержанию одинаковых символов
Всем доброго здоровья! Такой вопрос. Как проверить две строки одинаковой длины, на наличие в них одинаковых символов? К примеру, написать...

Поиск одинаковых файлов
Итак, решаю задачу и в ходе решения возникла проблема. У меня есть файл в котором командой dir *.* /a-d/b/s>filelist.txt были записаны...

Поиск одинаковых файлов
Все привет!!! как вы поняли нужен батник, который сканит систему, находит одинаковые файлы (размер и название) и складывает это все в txt...

Поиск одинаковых файлов PHP
Привет всем,подскажите,как в папке можно искать одинаковые файлы?Искать нужно по содержимому.Файлы могут быть разных форматов.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru