Считать дубликаты файлов
Я новичок в Python и хочу посчитать содержимое в текстовых файлах 60 КБ, которые являются одинаковыми, и перечислить все различное содержимое с количеством, сколько одинаковых, что-то вроде uniq -c
но на уровне файла, а не строки.
Пока что у меня есть:
from os import listdir
from os.path import isfile, join
mypath = "C:\Users\daniel.schneider\Downloads\Support" # my Filepath
onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
for currentFile in onlyfiles:
currentPath = mypath + '\\' + currentFile
f = open(currentPath)
print currentPath
for currentLine in currentFile:
print currentLine[24:]
f.close()
break
1 ответ
Решение
Я не проверил это полностью, но вы могли бы использовать Python hashlib
чтобы получить хэш MD5 для каждого файла и сохранить имена файлов в list
связанный с каждым хэшем в словаре.
Затем, чтобы получить уникальный контент с подсчетом количества файлов, в которых он появляется, выполните итерацию по словарю:
import os
import hashlib
mypath = 'testdup'
onlyfiles = [f for f in os.listdir(mypath)
if os.path.isfile(os.path.join(mypath,f)) ]
files = {}
for filename in onlyfiles:
filehash = hashlib.md5(open(os.path.join(mypath, filename), 'rb')
.read()).hexdigest()
try:
files[filehash].append(filename)
except KeyError:
files[filehash] = [filename]
for filehash, filenames in files.items():
print('{0} files have this content:'.format(len(filenames)))
print(open(os.path.join(mypath,filenames[0])).read())