Я портировал набор сценариев Python 2.7 на Python 3.5, чтобы я мог использовать некоторые библиотеки, которые недоступны в версии 2.7, но я получаю MemoryError из этого кода который работал ранее:Hashlib MemoryError в Python 3.5, но не в 2.7
import hashlib, functools
sha2h = hashlib.sha256()
with open('/path/to/any/file', 'rb') as f:
[sha2h.update(chunk) for chunk in iter(functools.partial(f.read, 256), '')]
насколько я могу сказать, что это правильный способ, чтобы получить SHA256 хэш файла. Кажется, я ничего не могу найти по этому поводу. Если это помогает, вот отслеживающий, когда приведенный выше код запускается из командной строки:
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in <listcomp>
попытался также заменить
sha2h = hashlib.sha256()
с
sha2h = hashlib.new('sha256')
в соответствии с документацией для hashlib, но это не привело к изменению результатов.
Любая помощь или понимание были бы оценены с благодарностью!
Спасибо! Это изменение изменило мою проблему. – Nstr10
Смущающе, это код, который я изначально написал - мой чрезмерно амбициозный проект «Hello world». Если вы чувствуете дополнительную полезность для этого новичка Python, не могли бы вы предложить (или ссылку) более правильный способ сделать это? – Nstr10
@ Nstr10: Используйте обычный цикл 'for'. – user2357112