Dans certains scénarios, il devient nécessaire de calculer le hachage MD5 des fichiers volumineux qui dépassent la RAM disponible. La fonction Python native hashlib.md5() ne convient pas à de tels scénarios car elle nécessite que l'intégralité du fichier soit chargée en mémoire.
Pour surmonter cette limitation, une approche pratique consiste à lire le fichier en morceaux gérables et mettre à jour le hachage de manière itérative. Cela permet un calcul de hachage efficace sans dépasser les limites de mémoire.
import hashlib
def md5_for_file(f, block_size=2**20):
md5 = hashlib.md5()
while True:
data = f.read(block_size)
if not data:
break
md5.update(data)
return md5.digest()
Pour calculer le hachage MD5 d'un fichier, utilisez la syntaxe suivante :
with open(filename, 'rb') as f:
md5_hash = md5_for_file(f)
La variable md5_hash contiendra le hachage MD5 calculé en tant qu'objet de type octets.
Assurez-vous d'ouvrir le fichier en binaire mode (« rb ») pour éviter des résultats incorrects. Pour un traitement complet des fichiers, envisagez la fonction suivante :
import os
import hashlib
def generate_file_md5(rootdir, filename, blocksize=2**20):
m = hashlib.md5()
with open(os.path.join(rootdir, filename), 'rb') as f:
while True:
buf = f.read(blocksize)
if not buf:
break
m.update(buf)
return m.hexdigest()
Cette fonction prend un chemin de fichier et renvoie le hachage MD5 sous forme de chaîne hexadécimale.
En utilisant ces techniques, vous pouvez calculer efficacement les hachages MD5 pour les fichiers volumineux sans rencontrer limitations de mémoire.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3