J'ai porté un ensemble de scripts Python 2.7 vers Python 3.5 afin que je puisse utiliser des bibliothèques qui ne sont pas disponibles en 2.7, mais je reçois MemoryError à partir de ce code qui a travaillé auparavant:Hashlib MemoryError en Python 3.5 mais pas en 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), '')]
pour autant que je peux dire, cela est la bonne façon d'obtenir un hachage SHA256 d'un fichier. Je n'arrive pas à trouver quelque chose à propos de ce problème. Si elle aide, voici le retraçage lorsque le code ci-dessus est exécuté à partir du shell:
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in <listcomp>
également essayé de remplacer
sha2h = hashlib.sha256()
avec
sha2h = hashlib.new('sha256')
pour correspondre à la documentation hashlib, mais cela n'a donné aucun résultat.
Toute aide ou compréhension serait grandement appréciée!
Merci! Ce changement a résolu mon problème. – Nstr10
Embarrassant, c'est le code que j'ai écrit à l'origine - mon projet "Hello world" trop ambitieux. Si vous vous sentez très utile pour ce débutant Python, pourriez-vous suggérer (ou lier) une façon plus appropriée de le faire? – Nstr10
@ Nstr10: utilise une boucle 'for' normale. – user2357112