import os,hashlib,time,tkinter
from tkinter.filedialog import askdirectory
st = time.perf_counter()
def get_md5(filename):
## print('get_md5 called')多次调用MD5
m=hashlib.md5()
mfile=open(filename,'rb')
m.update(mfile.read())
mfile.close()
md5_value = m.hexdigest()
return md5_value
def get_dir(path):
print('get_dir called')
dirlt = []
lt = os.listdir(path)
for i in lt:
if os.path.isdir(path+i):
lt1 = os.listdir(path+i+'/')
for ii in lt1:
dirlt += [path+i+'/'+ii]
return dirlt
if __name__ == '__main__':
r = tkinter.Tk()
path = askdirectory()
## path = eval(input("输入路径:"))
path = path+'//'
print(path)
exname = input("删除文件扩展名:")
p=0
p1=0
md5dt = {}
dirlt = get_dir(path)
for i in dirlt:
md5 = get_md5(i)
if md5 in md5dt:
md5dt[md5] = [md5dt.get(md5),'{}'.format(i)]
#字典值的修改方式^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
## print(md5dt[md5])
#为什么不用print打印不出来 ??????????????????
################################################################
## print(i.split('.')[1])
if i.split('.')[1] == exname:
## os.remove(i)
p1 += 1
print(i+'已经删除!!!')
print('\n')
else:
md5dt.update({md5:i})
#list('md5')->['m','d','5']
#用['md5']->['md5']
p += 1
for i in md5dt:
if isinstance(md5dt[i],list):
print(md5dt[i])
print('一共有{}个文件'.format(p))
print('一共有{}个重复文件'.format(p1))
print('共用{:.2f}秒'.format(time.perf_counter()-st))
python去重
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。