Изменено ВопросВычислить md5 на лету при чтении большого текстового файла
Я знаю, как использовать Python для создания MD5 хэш из файла http://docs.python.org/3.5/library/hashlib.html#hash-algorithms. Я также знаю, как читать текстовый файл по строкам. Однако мои файлы могут расти большими, и это неэффективно, чтобы прочитать файл дважды от начала до конца. Интересно, можно ли читать данные только один раз с диска, и, как в потоке/трубе, объединить 2 задачи разумно. Может быть что-то вроде:
- Инициализировать MD5
- открыть файл в двоичном режиме
- читать порцию данных (например, buffer_size = 65536) в буфер
- Обновлять md5 с куском просто читать
- обеспечивает буфер в другой поток, чтобы продолжить обработку данных
- использование TextIOWrapper (?), чтобы снова прочитать данные, но на этот раз это текст
- чтения текст за строкой. Когда буфер потребляется, задайте базовый уровень для получения дополнительных данных, пока EOF. Он будет читать больше двоичных данных, обновлять md5, предоставлять новый буфер ... и я могу продолжить чтение строки за строкой (это похоже: повторите с шага 3 до EOF)
- после EOF, я обработал все мои текстовая строка за строкой, и имеют md5
цель состоит в том, чтобы стать более эффективным, читая (большие) файлы с диска только один раз, а не в два раза, за счет разумного сочетания двоичную обработку расчета md5 и текст, основанный на тот же файл.
Надеюсь, это объяснит это лучше. В очередной раз благодарим за помощь.
Юрген
Эта страница Я знаю, и я читал его раньше. Но где именно он описывает, что я хочу использовать тот самый буфер, который я прочитал для md5, для чтения текста по строкам? – Juergen
Посмотрите, моя проблема не в md5.Моя проблема: a) читать буферы из двоичного файла; b) делать что-то с буфером; c) использовать этот буфер (который не является байтом) для чтения текста там по строкам. У вас нет рабочего примера случайно? – Juergen