В этом подходе используется функция хеширования в сочетании со словарем списка файлов со счетчиком количества раз, которое появляется каждый элемент - небольшое расширение в другом подходе.
Предположительно, вы говорите о дубликатеимена файлов в разных папках, что означало бы, что я бы поставил начальные file_list
вместе немного по-другому, но это основа того, как бы я решил эту проблему (в зависимости от того, что возвращает glob.glob
)
import hashlib
file_list = []
def test_hash(filename_to_test1, filename_to_test2):
"""
"""
filename_seq = filename_to_test1, filename_to_test2
output = []
for fname in filename_seq:
with open(fname, "rb") as opened_file:
file_data = opened_file.readlines()
file_data_as_string = b"".join(file_data)
_hash = hashlib.sha256()
_hash.update(file_data_as_string)
output.append(_hash.hexdigest())
if output[0] == output[1]:
print "File match"
else:
print "Mismatch between file and reference value"
possible_duplicates = {}
for idx, fname in enumerate(file_list):
if fname in possible_duplicates:
possible_duplicates[fname].append(idx)
elif fname not in possible_duplicates:
possible_duplicates[fname] = [idx]
for fname in possible_duplicates:
if len(possible_duplicates[fname]) > 1:
for idx, list_item in enumerate(possible_duplicates[fname]):
test_hash(possible_duplicates[fname][0], possible_duplicates[fname][idx])