#!/usr/bin/env python #coding: utf-8 import md5 import os from time import clock as now def getmd5(filename): file_txt = open(filename, 'rb').read() m = md5.new(file_txt) return m.hexdigest() def main(): path = u'C:\\aa\bb\cc\dd' all_md5 = {} all_size = {} total_file = 0 total_delete = 0 start = now() for file in os.listdir(path): total_file += 1 real_path = os.path.join(path, file) if os.path.isfile(real_path) == True: size = os.stat(real_path).st_size name_and_md5 = [real_path, ''] if size in all_size.keys(): new_md5 = getmd5(real_path) if all_size[size][1] == '': all_size[size][1] = getmd5(all_size[size][0]) if new_md5 in all_size[size]: total_delete += 1 print u'刪除', file try: os.remove(os.path.join(path, file)) except: print 'No such file: %s' % file else: all_size[size].append(new_md5) else: all_size[size] = name_and_md5 end = now() time_last = end - start print u'文件總數: ', total_file print u'刪除個數: ', total_delete print u'耗時: ', time_last, '秒' if __name__ == '__main__': main()
參考:http://developer.51cto.com/art/201205/334378.htm html
原文沒有執行刪除文件的操做:python
try: os.remove(os.path.join(path, file)) except: print 'No such file: %s' % file
仍是看官方文檔靠譜app
https://docs.python.org/2/library/os.html?highlight=os.remove#os.remove code