实现代码如下:
#!/usr/bin/python #*-*coding:utf8*-* import os import sys import hashlib def md5sum(data): with open(data, "rb") as f: md5 = hashlib.md5() for i in f.read(4096): if i: md5.update(i) else: break md5 = md5.hexdigest() return md5 """在指定字典中查找指定的key,如果存在就把值追加到这个key对应的value中,并以列表保存 如果不存在就添加一个新元素,同样value也是以列表形式保存""" def add(dic, key, value): dic.setdefault(key, [ ]).append(value) def _files(data): dir = os.walk(data) dic1 = {} for x, y, z in dir: for i in z: file_path = os.path.join(x, i) add(dic1, md5sum(file_path), file_path) for i in dic1: #对字典进行循环如果有相同的文件就打印出其md5和文件名 if len(dic1[i]) > 1: print(i, dic1[i]) if __name__ == "__main__": _files(sys.argv[1])
运行结果如下:
时间: 2024-11-10 08:06:07