python3 文件去重

import hashlib
import os

class DirProc():
    def __init__(self):
        self.main_dir = "C://software//导数据//mtm//imgs"

    def md5(self, fname):
        if os.path.exists(fname):
            hash_md5 = hashlib.md5()
            with open(fname, "rb") as f:
                for chunk in iter(lambda: f.read(4096), b""):
                    hash_md5.update(chunk)
            return hash_md5.hexdigest()

    def remove(self, fpath1, fpath2):
        md51 = self.md5(fpath1)
        md52 = self.md5(fpath2)
        if md51 == md52:
            os.remove(fpath1)
            print("去重", fpath1)

    def remove_duplicate(self):
        dir_list = os.listdir(self.main_dir)
        for name in dir_list:
            sub_dir = self.main_dir + "//" + name;
            file_list = os.listdir(sub_dir)
            for fname in file_list:
                for sub_fname in file_list:
                    if fname == sub_fname:
                        continue
                    f_dir = sub_dir + "//" + fname;
                    f_sub_dir = sub_dir + "//" + sub_fname;
                    self.remove(f_dir, f_sub_dir)

dirProc = DirProc()
dirProc.remove_duplicate()
时间: 2024-10-31 14:20:51

python3 文件去重的相关文章

360云盘文件去重怎么用

  1.首先我们登录360云盘 2.进入功能大全==点击文件去重 3.在弹出的对话框中点击"全盘扫描" 4.然后我们可以看到它就帮你扫出了你的360云盘中重复的文件,如果没有重要作用,那么我们就将其删除

360云盘文件去重功能使用步骤图文教程

  1.首先我们登录360云盘. 2.进入功能大全==点击文件去重. 3.在弹出的对话框中点击"全盘扫描". 4.然后我们可以看到它就帮你扫出了你的360云盘中重复的文件,如果没有重要作用,那么我们就将其删除.

shell两个文件去重的多种姿势_linux shell

前言 大家都知道shell在文本处理上确有极大优势,比如多文本合并.去重等,但是最近遇到了一个难搞的问题,即两个大数据量文件去重.下面来看看详细的介绍吧. 要求  有txt文件A.txt和B.txt. 其中A为关键词和搜索量,以逗号分隔,约90万行. B为关键词,约400万行. 需要从A中找出与B重复的关键词. 我试了N种姿势,但结果都不尽人意,最奇怪的是有些方法对小数据量的测试文件有用,一旦用在A与B上就会失败,真叫人百思不得其解. 姿势一: awk -F, '{print $1}' A >k

360云盘如何删除一样的文件 360云盘文件去重使用方法

1.我们使用自己的账号打开并登录360云盘,打开进入 2.然后在打开界面会看到有一个"功能大全"点击进入之后会看到有一个"文件去重"了,我们点击它打开进入 3.然后会弹出提示要"全盘扫描"了,具体如下图所示 4.在我们点击全盘扫描之后会看到有一个 360云盘中重复的文件,然后我们就可以删除重复的文件了,这个删除重复文件还是需要手工来操作了. 好了到此关于文件去重功能的使用也就介绍完了,其实是非常的简单的哦.

大型文件去重

1.背景 面试的时候经常会被问到一个问题,大型的文件该如何去重.写一个python脚本是效率很差的策略.这里讲下如何用shell实现. 2.流程 (1)文件切割 用split函数对于文件切割. split -l 10000 test.txt -l是按照行切割,10000是每10000行切割成一份文件.切割完会在当前目录自动生成10000行一例的文件. (2)去重 sort -u origin.txt -o output.txt 本文来自博客 "李博Garvin" 转载请标明出处:htt

linux下文件合并、分割、去重

1.文件合并  1.1文件上下合并 cat f1 f2> muti  (将文件f1.f2合并成文件muti,f1在上,f2在下) 1.2左右合并 paste f1 f2 > muti  (将文件f1.f2合并成文件muti,f1在左,f2在右,默认使用tab键隔开)   2.文件分割 2.1按行数分割 split -l 5 file (将文件file进行分割,每个分割后的小文件,行数不大于5) 2.2按大小切割 spilt -C 20M file (将文件file进行分割,每个分割后的文件最大

去除网盘中的重复文件

  现在很多人喜欢通过网盘来专门的存储一些重要的文件,或者将他人分享的文件转存到自己的网盘里面.但是时间一长难免就会出现,一些不同名称但是内容相同的文件,这样就会占用过多的网盘空间.那么如何快速分析出这些重复的文件,并将其从网盘空间里面彻底删除掉呢? 1. 自带功能快速扫描 由于很多网友都有类似的需求,所以有的网盘运营商已经开发出了相应的功能.比如要想去除快盘中的重复文件,那么首先在系统托盘找到快盘的图标,双击它以后进入到快盘的同步目录里面.接着点击右侧面板中的"文件分析"的功能,在弹

网络“投毒”系列报告:全国多省软件升级劫持攻击事件数据分析

本文讲的是网络"投毒"系列报告:全国多省软件升级劫持攻击事件数据分析, 概述 初步披露了基于域名bjftzt.cdn.powercdn.com的一组大规模软件升级劫持事件.在这个事件的第一阶段中,用户尝试升级若干知名软件客户端时,HTTP URL会被劫持,实际下载得到的是"加料"的恶意软件.在第二阶段中,恶意软件会在表面上正常安装知名软件客户端的同时,另外在后台偷偷下载安装推广其他软件. 基于网络层面的监测计算,此次软件升级劫持的影响范围远超WannaCry勒索蠕虫

Shell日志分析常用命令和例子_linux shell

学会用shell分析日志只要一上午!!! 很多地方分享了日志分析的shell脚本,但是基本没说每个命令符的具体含义,学习成本还是很高,在这里总结下,方便大家快速入门. 1.在Windows下的用户要使用shell命令符的话请先安装cygwin,安装方法自行Google(搜技术问题请使用google,百度搜不到活该) 2.下面粗略介绍下SEO日志分析常用的命令符用法,需要详细了解每个命令符请使用Google. less 文件名 查看文件内容 按"q" 退出 cat 文件名 打开文件,可以