170 похожих чатов

Друзья, а никто не сталкивался с необходимостью подсчитать checksum файла? У

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

Собственно вопрос - как лучше всего реализовать подобное без использования сторонних библиотек. Есть ли в стандартном наборе Python 3.9 что-то для реализации подобного? Как оно считает контрольную сумму у больших файлов ?

Мне именно подсчитать контрольную сумму нужно

19 ответов

10 просмотров

hashlib

Sapienti-Sat Автор вопроса
Alex
hashlib

def md5sum(filename): hash = md5() with open(filename, "rb") as f: for chunk in iter(lambda: f.read(128 * hash.block_size), b""): hash.update(chunk) return hash.hexdigest() Так ведь подходит?

Sapienti Sat
def md5sum(filename): hash = md5() with o...

норм, но блок можно взять и побольше.

Sapienti-Sat Автор вопроса

у сотни пользователей может быть одинаковый файл, они его будут грузить, но с разными именами (имя, описание итд + ссылка на файл хранятся в БД). Например, один загрузит с названием ххх.docx и заголовком "пример договора на ... ", а второй загрузить тот же xxx.docx с заголовком "образец договора на ...". Зачем хранить 2 файла, когда можно хранить 2 записи в БД, но с одной общей ссылкой на файл :)

охуенный план отстрелить себе яйца

Sapienti Sat
у сотни пользователей может быть одинаковый файл, ...

насколько вообще целесообразно заморачиваться такими вещами в век S3?

evgeniy
Почему?

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

Sapienti-Sat Автор вопроса
Alex
насколько вообще целесообразно заморачиваться таки...

Я старпёр :( оптимизация и всё такое сразу закладывается. В приоритете качество и скорость работы, вместо скорости разработки. Да и денег сэкономить на серверах после запуска MVP

Alex
потому что ты путаешь свой сраный локалхост и поис...

Так его функция делает тоже самое. Вроде.

evgeniy
Почему?

1. в условиях задачи не обозначены размеры файлов. 2. не обозначены требования по памяти для сервиса. 3. не обозначены предполагаемое количество одновременных операций.

evgeniy
Так его функция делает тоже самое. Вроде.

нет, твоя функция читает весь файл в память и потом уже вычисляет его хеш.

Sapienti Sat
Я старпёр :( оптимизация и всё такое сразу заклады...

лучше делать быстрее везде где только можно

что ты подразумеваешь под "нативно считается"?

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Карта сайта