Я пишу скрипт python, который должен искать все файлы с тем же содержимым в cwd. Моя идея - использовать хэш-функции, но когда я запускаю скрипт, каждый файл получает другой дайджест, даже если он является копиями, чего не происходит, если я их вычисляю на терминале. Я просто не могу понять, где проблема. Вот кодХеширование файлов с помощью python
import sys
import os
import hashlib
from collections import defaultdict
blocksize = 65536
def hashfile(file, hasher):
buf = file.read(blocksize)
while len(buf)>0:
hasher.update(buf)
buf = file.read(blocksize)
#print hasher.hexdigest()
return hasher.hexdigest()
def main():
dir = os.getcwd()
files = os.listdir(dir)
dict = defaultdict(list)
l = []
hasher = hashlib.sha256()
for file in files:
hash = hashfile(open(file, 'rb'), hasher)
l.append((hash, file))
for k, v in l:
dict[k].append(v)
for k in dict.items():
print k
if __name__ == '__main__':
main()