Python删除同一个文件夹下的重复文件

#!/usr/bin/env python
#coding: 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()

参考: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

时间: 2024-07-31 14:33:19

Python删除同一个文件夹下的重复文件的相关文章

Nodejs下如何判断文件夹的存在以及删除文件夹下所有的文件

代码如下: 1 var folder_exists = fs.existsSync('./cache'); 2 3 if(folder_exists == true) 4 { 5 var dirList = fs.readdirSync('./cache'); 6 7 dirList.forEach(function(fileName) 8 { 9 fs.unlinkSync('./cache/' + fileName); 10 }); 11 } 第一行代码判断当前文件夹下有无cache目录,如

用python查找在指定目录下特定文件夹下的指定文件

本代码是在python2.*上边所写. 功能:在指定目录下查找特定文件夹下的特定文件. 实例:查找在packages目录下文件夹名为values下的strings.xml文件 #!/usr/bin/env python import os def walk_dir(path): filter_file_name = 'strings.xml' for root, dirs, files in os.walk(path): for dir_item in dirs: if dir_item ==

删除某个文件夹下的所有文件

//删除本地文件夹下保存的文件 NSFileManager *fileManager = [NSFileManager defaultManager];                     NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];                     NSString *dicrector

删除指定文件夹中除保留的文件外的所有文件批处理 删除指定文件夹下的空文件夹,包括子目录批处理

删除指定文件夹中除保留的文件外的所有文件批处理 @echo off set "ext= sln csproj" for /f "delims=" %%a in ('dir /b/s/a-d *.*') do ( set .= if /i not "%%~nxa"=="%~nx0" ( for %%i in (%ext%) do if /i "%%~xa"==".%%i" set .=.

用Java实现将多级文件夹下的所有文件统一放到一个文件夹中

每次下了电影(男生懂得呦),每部电影都放在一个单独的文件夹里,看的时候很是不方便啊,一直重复着进入文件夹.后退,再进.再退的操作,而手动把这些电影全部复制出来又太繁琐.因此为了解决这个问题,用IO写了一个小工具. 以下代码只实现了把多级文件夹下的所有文件复制到一个文件夹中,如果需要指定复制文件的格式,可以在1111处添加一个判断.如果需要同时删除原文件夹可以在添加一个递归删除的方法. package Bao; import java.io.BufferedInputStream;import j

linux查找文件夹下的全部文件里是否含有某个字符串

查找文件夹下的全部文件里是否含有某个字符串 find .|xargs grep -ri "IBM" 查找文件夹下的全部文件里是否含有某个字符串,而且仅仅打印出文件名称 find .|xargs grep -ri "IBM" -l 1.正則表達式 (1)正則表達式一般用来描写叙述文本模式的特殊使用方法,由普通字符(比如字符a-z)以及特殊字符(称为元字符.如/.*.?等)组成. (2)基本元字符集及其含义 ^ :仅仅匹配行首. 如^a 匹配以a开头的行abc,a2e,

java读取某个文件夹下的所有文件

import java.io.FileNotFoundException;import java.io.IOException;import java.io.File; public class ReadFile {        public ReadFile() {        }        /**         * 读取某个文件夹下的所有文件         */        public static boolean readfile(String filepath) thro

Java遍历一个文件夹下的全部文件

Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常使用的构造器有: 1.public File(String pathname){} 在pathname路径下创建文件对象 2.public File(String path,String name){} 在path參数指定的文件夹中创建具有给定名字的File对象.假设path为null,构造器将使用

Linux递归解压缩一个文件夹下的所有文件

gunzip -r hongchangfirst/data 如何递归删除那些剩余的非log结尾的文件? 先列出确认一下: find hongchangfirst/data -type f ! -name "*.log" 然后真正的删除: find hongchangfirst/data -type f ! -name "*.log" -exec rm -f {} \; 记住后边-exec一定要加空格,否则会出现find: missing argument to `-