删除电脑上重复备份的图片

  重复备份的文件名一般含有(1),(2)等,用python实现,顺便检测一下不同目录下的相同文件名的情况,也一并删除

#!/usr/bin/env python
#coding:utf-8
"""
__title__ = ''
__author__ = 'hadoop'
__mtime__ = '2016/6/18'
"""

# 程序先运行,打印信息正确之后,取消os.remove(path)的注释,真正的删除文件

import os
from time import clock as now

def list_dir(rootDir):
    fileNum=0
    deleteNum =0
    sameName =0
    str = u'('  # 删除文件名中含有(的文件,这个可以根据实际需要改成想要的名字,现在是根据文件名识别,高级算法是根据图片内容找相似
    dirs = []
    files =[]   #保存文件名
    dirs.append(rootDir)
    for root in dirs:
        for lists in os.listdir(root):
            path=os.path.join(root,lists)
            if os.path.isdir(path):
                dirs.append(path)
            else:   #是文件
                fileNum += 1
                filename = os.path.basename(path)
                if filename.decode('gbk') in files:
                    sameName += 1
                    print '删除相同文件名的文件:',path.decode('gbk')
                else:
                    files.append(filename.decode('gbk'))
                    # os.remove(path)
                # print filename.decode('gbk')              #解码成gbk可以打印出中文名字,否则乱码
                # print(filename.decode('gbk').find(str))   #find返回的是找到字符串的位置,没找到返回-1
                if filename.decode('gbk').find(str)!= -1:
                    deleteNum += 1
                    print '删除文件:',path.decode('gbk')
                    # os.remove(path)
    print '文件总个数为:', fileNum
    print '删除重复文件总个数为:',deleteNum
    print '删除相同文件名总个数为:',sameName

if __name__=='__main__':
    rootDir = raw_input("输入需要处理文件的根目录:")
    start=now()
    list_dir(rootDir)
    end=now()
    print ' 总共耗时:',end-start,''

 

posted on 2016-06-18 17:43  IT小不点  阅读(655)  评论(0编辑  收藏  举报