python 删除重复文件 附源代码

Posted 我心飞翔2015

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于python 删除重复文件 附源代码的主要内容,如果未能解决你的问题,请参考以下文章

pandas 重复数据处理大全(附代码)

即学即用的 30 段 Python 实用代码

我在哪里更改此 Python 代码片段以将临时文件保存在 tmp 文件夹中?

分享几个实用的代码片段(附代码例子)

分享几个实用的代码片段(附代码例子)

5分钟快速入门,用Python做SQLite数据库开发,附代码适合初学