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.
<code class="python">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()</code>
Pour calculer le hachage MD5 d'un fichier, utilisez la syntaxe suivante :
<code class="python">with open(filename, 'rb') as f: md5_hash = md5_for_file(f)</code>
La variable md5_hash contiendra le hachage MD5 calculé en tant qu'objet de type octets.
Assurez-vous d'ouvrir le fichier en mode binaire ('rb ') pour éviter des résultats incorrects. Pour un traitement complet des fichiers, envisagez la fonction suivante :
<code class="python">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()</code>
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 Hachages MD5 pour les fichiers volumineux sans rencontrer de limitations de mémoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!