Преобразование Unicode в Python Hashlib завершается неудачно - PullRequest
0 голосов
/ 13 ноября 2018

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

def calculate_checksum(filename):
sha256_hash = hashlib.sha256()
with open(filename, "rb") as f:
    # Read and update hash string value in blocks of 4K
    for byte_block in iter(lambda: f.read(4096), b""):
        sha256_hash.update(byte_block)
return sha256_hash.hexdigest()

Ошибка:

'utf8' codec can't decode byte 0xa3 in position 87: invalid start byte

Кажется, что Hashlib хочет преобразовать переменную byte_block в строку Unicode.Можно ли просто работать с байтами?

...