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

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

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

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

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

19 ответов

22 просмотра

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
Я старпёр :( оптимизация и всё такое сразу заклады...

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта