啥也不說了,直接上源碼 #! /usr/bin/env python #coding=utf-8 import os import md5 import time def getmd5( filename ): ''' 形參:文件名 返回:文件的MD5碼 ''' file = open( filen ...
啥也不說了,直接上源碼
#! /usr/bin/env python #coding=utf-8 import os import md5 import time def getmd5( filename ): ''' 形參:文件名 返回:文件的MD5碼 ''' file = open( filename, 'rb' ) file_content = file.read(1024*1024) file.close() m = md5.new( file_content ) return m.hexdigest() def delfile(flist_temp): ''' 形參:文件名list 返回:要刪除的文件名list ''' dellist = [] flist = [] fsize = [] for f in flist_temp: if os.path.isfile( f ): fsize.append( os.stat(f).st_size ) flist.append( f ) for i in range( len(fsize) ): for j in range( i+1, len(fsize) ): if fsize[i] == fsize[j]: if getmd5( flist[i] ) == getmd5( flist[j] ): dellist.append( flist[i] ) break return dellist def main(): ''' 刪除當前目錄下的重覆文件(包括子文件夾下的重覆文件) ''' print '刪除當前目錄下的重覆文件(包括子文件夾下的重覆文件)\n' start = time.clock() path = os.getcwd() list_fn = [] for i in os.walk(path): for fn in i[-1]: full_path = os.path.join( i[0],fn ) list_fn.append( full_path ) list_fn.reverse() print '文件總數:\t',len( list_fn ),'\n' delf = delfile( list_fn ) for f in delf: print '刪除\t',f #os.remove( f ) end = time.clock() print '\n文件總數:\t',len( list_fn ),'\n' print '刪除文件:\t',len( delf ),'\n' print '總共用時:\t',end-start,'\n' #os.remove('delReFile.py') time.sleep(30) return 0 if __name__ == '__main__': main()View Code
結果:
收好不謝
參考:刪除目錄下相同文件 -> 逐級優化(python實現)http://www.cnblogs.com/ma6174/archive/2012/05/05/2484415.html