python 删除重复文件 附源代码

啥也不说了,直接上源码

#! /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

转载于:https://www.cnblogs.com/woxinfeixiang2015/p/5352988.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值