Python 3.11+hashlibфункция
hashlib.file_digest()
хеширование
Хеш содержимого файла одной строкой: читает открытый в двоичном режиме файл кусками и возвращает готовый хеш-объект.
Синтаксис
hashlib.file_digest(fileobj, digest, /)
Заменяет ручной цикл с f.read(65536) и update(), при этом память не зависит от размера файла. Файл, открытый в текстовом режиме, отвергается с ValueError — нужен 'rb'. Возвращается объект, а не строка: дальше зовут hexdigest(). Закрывает файл вызывающий, поэтому вызов ставят внутрь with.
Примеры
import hashlib
with open('data.bin', 'wb') as f:
f.write(b'hello world')
with open('data.bin', 'rb') as f:
digest = hashlib.file_digest(f, 'sha256')
print(digest.hexdigest()[:16]) # → b94d27b9934d3e08
import hashlib
with open('data.txt', 'w') as f:
f.write('hello world')
with open('data.txt') as f:
try:
hashlib.file_digest(f, 'sha256')
except ValueError:
print('нужен режим rb') # → нужен режим rb
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности