精华内容
下载资源
问答
  • 前言 为什么要写这篇文章呢。。。主要还是业务中有个需求,遍历一个将近200w数据的文件夹,大部分还都是视频文件那种,但是这玩意用的次数还不多,做文件夹index也不是很ok,所以写了一个...重复文件筛选支持md5,大小

    前言

    为什么要写这篇文章呢。。。主要还是业务中有个需求,遍历一个将近200w数据的文件夹,大部分还都是视频文件那种,但是这玩意用的次数还不多,做文件夹index也不是很ok,所以写了一个脚本来处理这个问题,从而发现了自己的一些薄弱点,将其记录下来,方便自己,也方便未来其他的兄弟使用

    基本需求

    • 把文件夹中的重复文件找出来
    • 找出来之后用csv输出,左边是源文件,右边是重复文件
    • 效率不能差,不能直接撑爆内存,不能占用过多资源
    • 检测的文件夹和存放csv的地方可以自己定义,加上终端交互
    • 重复文件筛选支持md5,大小等方式

    需求分析

    首先要分析一点,就是我们该如何去做重复文件的对比,并且效率还要高,首先网上过多的递归,os.walk的方法不可用,因为他们都会把遍历到的内容直接做成一个大列表,塞到内存里面,数据量大很容易爆掉,并且还要进行MD5,或者是大小比对,这个就非常难缠了。

    基础想法

    其实说白了,拿到所有文件列表file_list,把文件依次对比,这里我们可以用dict,分两种情况

    • 按照文件名和大小
      设定两个dict,例如record和dup,遍历file_list,生成一个数组,比对其中的文件名和大小

    • 按照大小和MD5值
      设定两个dict,例如record和dup,遍历file_list,生成一个数组,比对其中的md5值和大小

    具体代码

    闲话休提,我们开始写代码吧

    • 定义遍历函数代码

    首先定义遍历文件夹的部分diskwalk.py

    # coding: utf-8
    __author__ = "lau.wenbo"
    
    import os,sys
    
    class diskwalk(object):
        def __init__(self, path):
            self.path = path
        def paths(self):
            path = self.path
            # 这里用了一个迭代器逻辑,防止所有数据塞内存爆掉
            path_collection = (os.path.join(root,fn) for root,dirs,files in os.walk(path) for fn in files)
            return path_collection
    
    • 定义检查md5值代码

    接着我们定义检查md5值的一个逻辑checksum.py

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    __author__ = "lau.wenbo"
    
    import hashlib,sys
    # 分块读MD,速度快
    def create_checksum(path):
        fp = open(path)
        checksum = hashlib.md5()
        while True:
            buffer = fp.read(8192)
            if not buffer: break
            checksum.update(buffer)
        fp.close()
        checksum = checksum.digest()
        return checksum
    
    • 定义主函数代码
    # coding: utf-8
    __author__ = "lau.wenbo"
    
    from checksum import create_checksum
    from diskwalk import diskwalk
    from os.path import getsize
    import csv
    import os
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')
    
    def findDupes(path):
        record = {}
        dup = {}
        d = diskwalk(path)
        files = d.paths()
        for file in files:
            try:
                # 这里使用了大小,文件名的对比方式,如果你需要MD5值的对比方式,可以打开下面的注释
                #compound_key = (getsize(file),create_checksum(file))
                compound_key = (getsize(file), file.split("/")[-1])
                if compound_key in record:
                    dup[file] = record[compound_key]
                else:
                    record[compound_key]=file
            except:
                continue
        return dup
    
    if __name__ == '__main__':
        path = sys.argv[1]
        csv_path = sys.argv[2]
        if not os.path.isdir(path) or not os.path.isdir(csv_path) or csv_path[-1] != "/":
            print u"参数不是一个有效的文件夹!"
            exit()
        else:
            path = path.decode("utf-8")
            print u"待检测的文件夹为{path}".format(path=path)
            with open(u"{csv_path}重复文件.csv".format(csv_path=csv_path),"w+") as csvfile:
                # 源文件 重复文件
                header = ["Source", "Duplicate"]
                writer = csv.DictWriter(csvfile, fieldnames=header)
                writer.writeheader()
                print u"开始遍历文件夹,寻找重复文件,请等待........."
                print u"开始写入CSV文件,请等待........"
                for file in findDupes(path).items():
                    writer.writerow({"Source":file[1],"Duplicate":file[0]})
    

    结语

    实现了哪些功能呢,哈哈,结尾来说一下,其实核心就是我用了一个列表生成器,加了一个迭代器,迭代器可是好东西,不会撑内存,不错了,效率也还可以,200w数据判定也就20多分钟,支持大数据量

    展开全文
  • 可以查找出某个文件夹重复文件
  • 查找目录下所有文件夹内的重复文件(根据MD5值查找),删除重复文件
  • 删选两个文件夹重复文件

    千次阅读 2019-06-19 14:23:41
    下数据下一半报错,且未按顺序下载,想找出哪些文件未下载重新编辑txt进行下载,代码弱鸡不会写代码比较两个文件夹,利用excel分分钟搞定~ 1.原数据列表txt放进excel,数据量很大 2.将已下载数据地址放进excel...

    下数据下一半报错,且未按顺序下载,想找出哪些文件未下载重新编辑txt进行下载,代码弱鸡不会写代码比较两个文件夹,利用excel分分钟搞定~
    1.原数据列表txt放进excel里,数据量很大在这里插入图片描述
    2.将已下载数据地址放进excel里,通过id进行匹配
    将已下载数据地址放进excel里,通过id进行匹配选中所有文件,进上方窗口点击主页-复制地址在这里插入图片描述
    通过excel的替换去掉前面的地址后加入到原数据表格中,已下载数据有7566条在这里插入图片描述
    3.原数据和已下载数据id比较,原数据id已按升序排列(可不排序)
    在这里插入图片描述
    4.找出第二列含有第一列的数据,也就是找出原数据中已下载的数据,加入第三列,C2输入=IF(COUNTIF(B:B,A2),“已下载”,""),然后下拉,便可找出已经下载的数据
    在这里插入图片描述
    5.对C列进行删选,点击小三角,不勾选已下载,留下为下载数据重新制作下载list
    在这里插入图片描述
    6.删除添加的BC列,即可得到需要继续下载的list

    展开全文
  • 很多朋友都会遇到安卓手机空间越用越少的问题,明明也没往里面放什么,但空间就是不断...软件名称:搜索重复文件软件版本:4.07_super软件大小:2.03MB软件授权:免费适用平台:Android这款搜索重复文件App就如其名...

    很多朋友都会遇到安卓手机空间越用越少的问题,明明也没往里面放什么,但空间就是不断流失。实际上,这可能是由于系统和App产生了一些重复的文件,重复的文件不断增多的结果就是大大压缩了存储空间。有没有什么好办法可以删掉重复的文件?这款搜索重复文件App可以帮到你。软件名称:搜索重复文件

    软件版本:4.07_super

    软件大小:2.03MB

    软件授权:免费

    适用平台:Android

    这款搜索重复文件App就如其名字一样,是用来搜索手机中存在的重复文件的。开启App后,即可选择所需搜索重复文件的目录。比如说你如果经常下音乐放到Music文件夹,担心Music文件夹存在重复的歌曲,就可以将搜索范围定位Music文件夹。在设置中,还能够设定搜索文件的类型,以及是否搜索隐藏文件等。无论你是想找是否有重复的图片、音乐、视频、apk安装包等等,都不在话下。

    f23e53b6e488af1886b637af164d0338.pngeaad3a48c96e569225d428b57d70b0bf.gif

    可以设定搜索范围和搜索文件类型

    在搜索重复文件App的设置中,还能够设定如果发现了重复文件,将会自动选择哪一个。两个文件都一样,是保留最新的呢还是最旧的呢?是保留文件名最简洁的呢还是最详细的呢?这些在设置中都可以按照需求选择。

    eaad3a48c96e569225d428b57d70b0bf.gifeaad3a48c96e569225d428b57d70b0bf.gif

    可以选择是否搜索隐藏文件以及筛选文件大小,重复文件默认如何选择也可以设置

    设置好以后,就可以搜索重复文件了。视搜索范围和文件总量多少,App需要数分钟到十数分钟才能得出结果,各位可以耐心等候。完成重复文件搜索后,App会按照之前设定的选择,自动勾选符合条件的文件。用户可以一键删掉这些勾选的重复文件,也可以逐一点开查看到底是什么文件重复。当然,你也可以把选择移除,什么也不干。

    eaad3a48c96e569225d428b57d70b0bf.gifeaad3a48c96e569225d428b57d70b0bf.gif

    搜索完毕后即可处理重复文件

    eaad3a48c96e569225d428b57d70b0bf.gif

    可保存搜索结果,下次查找重复文件无需等待

    这个搜索重复文件App无疑是相当实用的,如果你需要释放手机存储空间或者整理文件,都派得上用途。不过也要注意,重复的文件不一定的无用的文件,误删掉什么系统文件就不好了,大家还是尽量把这款App用在SD卡等非系统目录下吧。

    展开全文
  • 记录一下 Java 代码实现文件夹文件的对比,主要包含 word、pdf、文本、图片等相关文件的对比计算,以及计算文本的相似率(重复率)、筛选出差异的文件、方便文件和文档的去重,并把所有的源码封装为jar包,简单...

    记录一下 Java 代码实现文件夹、文件的对比,主要包含 word、pdf、文本、图片等相关文件的对比计算,以及计算文本的相似率(重复率)、筛选出差异的文件、方便文件和文档的去重,并把所有的源码封装为jar包,简单集成,只需要一行代码即可调用。

    1、准备工作

    1)、下载封装好的jar包,并放入项目,具体可以参照下面的连接中的 “1.集成到项目” 这一章节:
    https://blog.csdn.net/u014374009/article/details/104783988

    2)、准备两个有差异的 word 文档,如下所示:

    测试素材下载
    在这里插入图片描述

    2、开始使用

    1)、新建一个类,如下所示进行调用:

    package com
    展开全文
  • 递归搜索指定文件夹下面的所有文件夹,找到文件名中包含目标字符串的文件,并拷贝到新目录下面,由此完成筛选。 脚本如下 import os import sys import shutil if sys.getdefaultencoding() != 'gbk': reload...
  • 1 如图所示,我左侧有一万本...3 随后两个文件夹相同的部分被筛选出来(白色为重复文件),我们可以尝试在右侧的文件夹搜索"侦探游戏"这个小说,发现的确如此。 4 什么都不管(保持下面两侧的状态)直接按Ctrl+...
  • 就是解压的字幕压缩包居然有四个字幕,四个字幕!然后打开我的视频播放软件居然每次都自动载入第一个,阿拉伯文,一脸懵逼!我不懂播放软件也不想懂他选取字幕的原理,手动拿第二个视频试了下,貌似删除...
  • 使用场景工作中我们可能会遇到这样的场景:需要按照一个特定的规则清单,将某些文件从一个文件夹筛选出来。比如说:从1000份体检报告中,筛选出单位A的文件。这时候我们拿着单位A的名单一个个复制出来,可能要到猴年...
  • 对重复的文件进行筛选并能删除,包括图片和音乐、各种文档、影视剧等,和其他大部分重复文件搜索软件得一个个点击选定重复文件删除不一样,本软件可以支持一键选定重复文件并删除。
  • 用Python清除文件夹中的重复视频

    千次阅读 2019-05-06 08:42:12
    在早期学Python的时候,买了一本《Python编程快速上手-让繁琐工作自动化》。 这本书里面讲得都比较基础,不过却非常的实用。...利用这三个模块实现对文件夹中的重复视频进行清除,实现文件夹中无重复文件情况...
  • 整理照片时发现有很多照片重复了,并且文件名最后多了一个 (1),在windows搜索时符号不被搜索筛选不出来所有带 (1) 的照片,所以在网上找到了以下代码用于方便的删除指定格式的东西。 import os import shutil # 这...
  • 根据清单扫描指定文件夹下并提取文件,以及统计文件重复的数量,简易小工具 ,内容合法合规自己开发的,适合pc端
  • Qt实现重复文件检测工具 基本原理 1、给定一个文件夹,遍历其中所有文件,获取所有文件的路径 2、通过文件大小进行一轮筛选,通过文件的大小,筛选出有相同大小的文件 3、计算筛选后的文件的MD5,。如果文件相同的话...
  • 代码是对文件文件夹操作进行了简单封装,以满足相应的应用场景 1. 文件复制 包含对类型的判断,子文件夹等 2. 修改文件名 3. 修改文件后缀 import os import time import shutil def copyfiles_create_...
  • 执行该py之后,会有一个对话框,通过选择目录,即可遍历该目录及子目录下所有文件,计算出md5值,并将md5值重复的文件列出,从而可手动删除重复文件,保留一个即可。 以下是python源代码: #!/usr/
  • 如何在Mac上查找重复文件

    千次阅读 2020-01-16 16:21:36
    如何在Mac上查找重复文件?电脑上有太多的重复文件,内存也会越来越少,运行当然会越来越慢,有这方面困扰的朋友,可以参考下方的两种方法,希望对您有所帮助。 方法1 在Mac上手动查找重复文件 当您决定不使用“重复...
  • 不同的数据集数量不一,且列别繁多,在做图像分类实验时,如果人工的去筛选和划分图片,工作量巨大,还容易犯错。作为一名合格的程序员,不会偷懒是万万不行的!废话不多说,直接上代码:#!/bin/bashtrainPath="此处...
  • 使用时,首先选择需要整理的盘符或目录,然后文件会自动排列出来,通过分析会按时间、大小、类型等条件筛选重复文件,可以按需选择删除或全部删除,右键菜单有一些快捷操作,各位朋友可以试试看,很简单的 ...
  • 同名文件筛选工具

    2018-03-14 16:04:15
    python 重复命名文件 筛选工具,也是一个python学习的范本。
  • 使用python在文件夹中删除重复的图片概述代码思路应用场景代码改进思路GitHub以及公众号~ 概述 最近因为学校比赛的缘故,需要制作一个图片数据集用于深度学习。但是在爬取数据的时候发现数据并不干净,数据集中出现...
  • Duplicate Cleaner - 重复文件 / 相似文件扫描 https://www.duplicatecleaner.com/ Duplicate Cleaner is a tool for finding and removing duplicate files from your computer or network drives. It is intended ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,973
精华内容 6,389
关键字:

如何筛选文件夹里重复的文件