Python刪除同一個文件夾下的重復文件代碼
#!/usr/bin/env pythoncoding: 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()</pre>
參考:http://developer.51cto.com/art/201205/334378.htm
原文沒有執行刪除文件的操作:
try: os.remove(os.path.join(path, file)) except: print 'No such file: %s' % file還是看官方文檔靠譜
https://docs.python.org/2/library/os.html?highlight=os.remove#os.remove