2017-02-19 8 views
-1

Привет, мир. Я действительно новичок в Hashlib, и я пытаюсь создать программу, которая делает все мои файлы в каталоге и затем делает все хэш-коды md5. я работаю с ним несколько часов, и это очень раздражает меня, что я не могу понять это. вот что я имею для кода до сих пор.MD5 Хеширование всех файлов в каталоге

import hashlib, os, sys 
for root, dirs,files in os.walk("C:\Users\Matt\AppData\NewFolder", topdown=True): 
    for name in files: 
     #print(os.path.join(root, name)) 
FileName = (os.path.join(root, name)) 

hasher = hashlib.md5() 
with open(str(FileName), 'rb') as afile: 
    buf = afile.read() 
    hasher.update(buf) 
print(hasher.hexdigest()) 

Если кто-то захочет помочь мне, это было бы здорово. Заранее спасибо.

+1

Число испрасило ошибку в тексте? В чем проблема с вашим текущим кодом? Вы пытались сделать хэш-файл? – osgx

+0

код работает только с отдельными файлами, но im пытается хешировать все в папке сразу – Tyrell

+0

В данном состоянии этот код будет выдавать 'IndentationError' –

ответ

2

Вам нужно переместить чтение и хеширование вашего файла внутри тела цикла.

import hashlib, os, sys 

for root, dirs,files in os.walk("C:\Users\Matt\AppData\NewFolder", topdown=True): 
    for name in files: 
     #print(os.path.join(root, name)) 
     FileName = (os.path.join(root, name)) 

     hasher = hashlib.md5() 
     with open(str(FileName), 'rb') as afile: 
      buf = afile.read() 
      hasher.update(buf) 
     print(hasher.hexdigest()) 
+0

О, черт побери, я так и не подумал, что это было так благодарно – Tyrell

+0

Кроме того, имейте в виду, что MD5 считается слабым в этой точке и не должен использоваться ни для чего связанного с безопасностью. Лучшей альтернативой является SHA-256. – Scovetta