我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python实现删除重复文件的示例代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python实现删除重复文件的示例代码

此程序主要是针对某个目录下的全部文件进行筛选,会删除重复的文件。

原理很简单,会计算每个文件的哈希,将哈希存入一个字典,文件名对应哈希。

import os
import hashlib

def hash_file(filename):
    """Return the SHA-1 hash
    of the file content."""
    h = hashlib.sha1()
    with open(filename, 'rb') as f:
        while True:
            chunk = f.read(4096)
            if not chunk:
                break
            h.update(chunk)
    return h.hexdigest()

def remove_duplicate_files(path):
    """Remove duplicates files in the directory."""
    files_hash = {}
    i=0
    j=0
    sum=len(os.listdir(path))
    for dirpath, dirnames, filenames in os.walk(path):
        for filename in filenames:
            j=j+1
            print("执行进度为:",100*j/sum,"%")
            file_path = os.path.join(dirpath, filename)
            file_hash = hash_file(file_path)
            if file_hash in files_hash:
                os.remove(file_path)
                i=i+1
                # print(i)
            else:
                files_hash[file_hash] = file_path
    print("文件总数为:",sum)
    print("此处处理的重复文件数目为:",i)

在使用的时候直接调用下面那个函数即可,传入参数为目录路径。

例如下面这样:

remove_duplicate_files("Y:\图片合集")

当然,你也可以将程序打包为一个exe文件,甚至为它添加简单的页面,让非计算机专业的人也能轻易使用。

补充

当然除了上文的方法,还有很多方法可以实现,下面是小编为大家整理的内容,希望对大家有所帮助

Python删除文件夹内指定的重复文件

import os
import re


class file_clean:
    def __init__(self, folder, filerege):
        self.folder = folder
        self.filerege = filerege
        self.folder_generator = os.walk(self.folder)

    # 删除所有文件夹及子文件夹下指定文件
    def del_all_file(self):
        for folder, subfolder, file_list in self.folder_generator:
            for file in file_list:
                if self.filerege == '*':
                    del_all_file = os.path.join(folder, file)
                    os.remove(del_all_file)
                elif re.findall(self.filerege, file):
                    del_all_file = os.path.join(folder, file)
                    print(del_all_file)
                    os.remove(del_all_file)

    # 只删除所有文件夹下的指定文件
    def del_file(self):
        for folder, subfolder, file_list in self.folder_generator:
            if os.path.dirname(folder) == os.path.dirname(self.folder):
                for file in file_list:
                    if self.filerege == '*':
                        del_file = os.path.join(folder, file)
                        os.remove(del_file)
                    elif re.findall(self.filerege, file):
                        del_file = os.path.join(folder, file)
                        print(del_file)
                        os.remove(del_file)


if __name__ == '__main__':
    # 选择文件夹路径 D盘C盘目录需要使用双斜杠r'D:\\', '\.wedrive'
    go = file_clean(r'D:\eong', '\.WeDrive')
    # 选择要执行的函数类型del_all_file删除件夹及子文件夹下指定文件,del_file只删除当前选择文件夹的指定文件
    go.del_file()

python删除本地夹里重复文件的方法

import os 
import hashlib 
import logging 
import sys 
 
def logger(): 
 """ 获取logger""" 
 logger = logging.getLogger() 
 if not logger.handlers: 
 # 指定logger输出格式 
 formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s') 
 # 文件日志 
 file_handler = logging.FileHandler("test.log") 
 file_handler.setFormatter(formatter) # 可以通过setFormatter指定输出格式 
 # 控制台日志 
 console_handler = logging.StreamHandler(sys.stdout) 
 console_handler.formatter = formatter # 也可以直接给formatter赋值 
 # 为logger添加的日志处理器 
 logger.addHandler(file_handler) 
 logger.addHandler(console_handler) 
 # 指定日志的最低输出级别,默认为WARN级别 
 logger.setLevel(logging.INFO) 
 return logger 
 
def get_md5(filename): 
 m = hashlib.md5() 
 mfile = open(filename, "rb") 
 m.update(mfile.read()) 
 mfile.close() 
 md5_value = m.hexdigest() 
 return md5_value 
 
def get_urllist(): 
 #替换指定的文件夹路径即可 
 base = ("F:\\pythonFile\\煎蛋网\\无聊图\\jpg\\") 
 list = os.listdir(base) 
 urlList=[] 
 for i in list: 
 url = base + i 
 urlList.append(url) 
 return urlList 
 
if __name__ == '__main__': 
 log = logger() 
 md5List =[] 
 urlList =get_urllist() 
 for a in urlList: 
 md5 =get_md5(a) 
 if (md5 in md5List): 
  os.remove(a) 
  print("重复:%s"%a) 
  log.info("重复:%s"%a) 
 else: 
  md5List.append(md5) 
  # print(md5List) 
  print("一共%s张照片"%len(md5List)) 

到此这篇关于Python实现删除重复文件的示例代码的文章就介绍到这了,更多相关Python删除重复文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python实现删除重复文件的示例代码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python实现删除重复文件的示例代码

这篇文章主要为大家详细介绍了如何利用Python实现删除重复文件功能,文中的示例代码讲解详细,对我们学习Python有一定的帮助,感兴趣的小伙伴的可以了解一下
2023-02-14

python实现MD5进行文件去重的示例代码

目录前言工作原理代码前言 工作中偶尔会遇到文件去重的事情,收到一大堆文件,名称各不相同,分析文件的时候发现有不少重复的文件,导致工作效率低下,那么,这里就写了一个python脚本实现文件去重功能 工作原理 脚本会检查你给出的文件路径下的所有
2022-06-02

MybatisPlus实现逻辑删除的示例代码

本文主要介绍了Mybatis Plus实现逻辑删除的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-19

Python实现文件复制删除

用python实现了一个小型的工具。其实只是简单地把debug 目录下的配置文件复制到指定目录,把Release下的生成文件复制到同一指定,过滤掉不需要的文件夹(.svn),然后再往这个指定目录添加几个特定的文件。这个是我的第一个pytho
2022-06-04

python 实现删除文件或文件夹实例详解

python 实现删除文件或文件夹最近自己学习Python 的知识,自己学习抓取网页的内容知识等,在学习的时候Python 删除文件夹或者文件知识的时候,觉得本篇内容不错,推荐给大家。 实例代码,仔细看注释明细:#-*- coding: U
2022-06-04

Android实现带有删除按钮的EditText示例代码

一、首先来看看效果这是一个带有删除按钮的输入文本框, 需要新建一个类继承自EditText, 先把代码贴出来, 然后在解释: 示例代码如下:public class EditTextWithDel extends EditText {pri
2022-06-06

Python实现文件操作帮助类的示例代码

在使用Python进行业务开发的时候,需要将一些数据保存到本地文件存储,方便后面进行数据分析展示,本文就来用Python制作一个文件操作帮助类,需要的可以参考一下
2023-03-19

基于Python实现文件分类器的示例代码

这篇文章主要为大家详细介绍了如何基于Python实现文件分类器,目的主要是为了将办公过程中产生的各种格式的文件完成整理,感兴趣的可以了解一下
2023-05-14

Nodejs实现文件上传的示例代码

笔者用nodejs做项目时需要用到文件上传的功能,在网上搜索了很多教程,找到了一个express的中间件,用于处理 multipart/form-data 类型的表单数据,可以很方便的将表单中的文件数据保存到服务器。 介绍 简单的用法 定义
2022-06-04

Java实现去除文档阴影的示例代码

文稿扫描大家用的都比较频繁、想是各种证件、文件都可以通过扫描文稿功能保存到手机。相比直接拍照,在扫描文稿时,程序会对图像进行一些矫正。比如去除阴影、修正倾斜、旋转矫正等。进行这些处理后的图片要更加容易识别。今天就来讨论一下去除阴影的操作
2022-12-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录