广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用Python制作一个文件去重小工具
  • 498
分享到

怎么用Python制作一个文件去重小工具

2023-06-29 06:06:16 498人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“怎么用python制作一个文件去重小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python制作一个文件去重小工具”吧!前言常常在下载网络素材时有很多的重复文

这篇文章主要讲解了“怎么用python制作一个文件去重小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python制作一个文件去重小工具”吧!

前言

常常在下载网络素材时有很多的重复文件乱七八糟的,于是想实现一个去重的操作。

怎么用Python制作一个文件去重小工具

主要实现思路就是遍历出某个文件夹包括其子文件夹下面的所有文件,最后,将所有文件通过MD5函数的对比筛选出来,最后将重复的文件移除。

怎么用Python制作一个文件去重小工具

实现步骤

用到的第三方库都比较的常见,其中只有hashlib是用来对比文件的不是很常见。其他的都是一些比较常见的第三方库用来做辅助操作。

import os  # 应用文件操作import hashlib  # 文件对比操作import logging  # 日志函数操作import sys  # 系统应用操作

日志的设置基本都是这一套的范式,按照规则设置好日志打印的相关信息。

logger = logging.getLogger('系统文件去重')logging.basicConfig(fORMat='%(asctime)s %(levelname)-8s: %(message)s')logger.setLevel(logging.DEBUG)

文件去重的实现逻辑代码块如下:

diretory = input('请输入需要整理的文件目录: \n')  # 去重的文件夹路径if os.path.isdir(diretory):    logger.info('当前目录[' + diretory + ']校验成功!')    md5s = []    for file_path, dir_names, file_names in os.walk(r'' + diretory):        for file_name in file_names:            try:                file_name_path = os.path.join(file_path, file_name)                logger.info('当前比对路径: '+ file_name_path)                md5 = hashlib.md5()                file = open(file_name_path, "rb")                md5.update(file.read())                file.close()                md5_value = md5.hexdigest()                if md5_value in md5s:                    os.remove(file_name_path)                    logger.info('[' + file_name_path + ']出现重复已经移除!')                else:                    md5s.append(md5_value)            except:                logger.error('[' + file_name_path + ']对比发生异常,执行下一个!')else:    logger.error('输入的文件夹或者目录不存在!')

以上就是文件去重的整个实现过程,用来做一个清理电脑文件的小工具还是比较实用的。

补充

本文中主要是利用hashlib.md5()函数实现的,下面小编为大家重点介绍一下hashlib.md5()

Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。

什么是摘要算法呢?

摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。 举个例子,你写了一篇文章,内容是一个字符串'how to use python hashlib - by Michael',并附上这篇文章的摘要是'2d73D4f15c0db7f5ecb321b6a65e5d6d'。如果有人篡改了你的文章,并发表为'how to use python hashlib - by Bob',你可以一下子指出Bob篡改了你的文章,因为根据'how to use python hashlib - by Bob'计算出的摘要不同于原始文章的摘要。

可见,摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。

摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算f(data)很容易,但通过digest反推data却非常困难。而且,对原始数据做一个bit的修改,都会导致计算出的摘要完全不同。

当然,hashlib.md5()除了可以用来给文件去重,还能做到密码加密,下面是示例代码

#!/usr/bin/env python#-*- coding:utf-8 -*-"""功能:    登录验证模块详细说明:    1.密码文件为passwd    2.passwd未创建或丢失,会提示:密码文件不存在,建议重新注册!!    3.未注册用户登录会提示:用户名不存在,请您先进行注册!    4.已注册用户登录时,忘记密码,尝试3次后密码还不正确则退出验证,等一会儿则可以重新登录    5.作为装饰器进行登录验证"""import JSONimport hashlibimport ospwd = os.getcwd()fileName = os.path.join(pwd,"passwd")#将明文密码通过md5进行加密,返回一个加密后的md5的值def calc_md5(passwd):    md5 = hashlib.md5("haliluya")    md5.update(passwd)    ret = md5.hexdigest()    return ret#新用户注册模块def reGISter():    #判断密码文件passwd是否存在,存在则载入列表,不存在就重新创建一个空字典    if os.path.exists(fileName):        #载入用户列表,数据结构为字典,k=userName,v=passwdMd5        with open("passwd", "r+") as loadsFn:            userDB = json.loads(loadsFn.read())    else:        userDB = {}    #让用户输入用户名    userName = raw_input("姓名:")    #标志位:控制循环跳出    flag = True    while flag:        #用户注册时,需输入两次密码        passwd1 = raw_input("密码:")        passwd2 = raw_input("确认密码:")        #如果两次密码不一致,则不执行下一步,再次输入密码并进行确认        if not passwd1 == passwd2:            continue        else:            #两次输入密码一致,标志位置为False,下次跳出循环            flag = False        #调用calc_md5函数将明文密码转为对应的md5值,用于保存        passwdMd5 = calc_md5(passwd1)    #将用户名与密码对应存入字典userDB中    userDB[userName] = passwdMd5    #将用户名和密码存入文件    with open(fileName, "w") as dumpFn:        dumpFn.write(json.dumps(userDB))#用户登录验证,装饰器def login(func):    def decorater(*args,**kwargs):        #判断passwd文件是否存在,存在则载入userDB(用户:密码),否则就重新注册新的passwd文件并返回        if os.path.exists(fileName):            with open("passwd", "r+") as loadsFn:                userDB = json.loads(loadsFn.read())        else:            print "密码文件不存在,建议重新注册!!"            register()            return        name = raw_input("用户名:")        #用户名是否存在,存在就继续输入密码,不存在则进行注册        if name in userDB.keys():            flag = True            counter = 0            #循环输入密码,密码正确,flag=False(下次直接跳出循环)并执行函数,密码错误则允许尝试3次,超过3次验证失败,退出验证            while flag:                passwd = raw_input("密码:")                passwdMd5 = calc_md5(passwd)                if passwdMd5 == userDB[name]:                    flag = False                    func(*args,**kwargs)                elif counter > 2:                    print "您已经尝试了3次,请过会儿再试!!"                    return                else:                    counter += 1        else:            print "用户名不存在,请您先进行注册!"            register()    return decoraterif __name__ == "__main__":    @login    def hello():        print "Hello world!"    hello()

感谢各位的阅读,以上就是“怎么用Python制作一个文件去重小工具”的内容了,经过本文的学习后,相信大家对怎么用Python制作一个文件去重小工具这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 怎么用Python制作一个文件去重小工具

本文链接: https://www.lsjlt.com/news/322961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 怎么用Python制作一个文件去重小工具
    这篇文章主要讲解了“怎么用Python制作一个文件去重小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python制作一个文件去重小工具”吧!前言常常在下载网络素材时有很多的重复文...
    99+
    2023-06-29
  • 基于Python制作一个文件去重小工具
    目录前言实现步骤补充前言 常常在下载网络素材时有很多的重复文件乱七八糟的,于是想实现一个去重的操作。 主要实现思路就是遍历出某个文件夹包括其子文件夹下面的所有文件,最后,将所有文件...
    99+
    2022-11-13
  • 基于PyQt5制作Excel文件数据去重小工具
    需求说明:将单个或者多个Excel文件数据进行去重操作,去重的列可以通过自定义制定。 开始源码说明之前,先说明一下工具的使用过程。 1、准备需要去重的数据文件。 2、使用工具执行...
    99+
    2022-11-13
  • 怎么用QT制作一个简易的传输文件小工具
    本篇内容主要讲解“怎么用QT制作一个简易的传输文件小工具”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用QT制作一个简易的传输文件小工具”吧!先看下效果图可以看到既可以接受文件也可进行发送文...
    99+
    2023-06-22
  • 基于Python怎么制作一个文件解压缩工具
    经常由于各种压缩格式的不一样用到文件的解压缩时就需要下载不同的解压缩工具去处理不同的文件,以至于桌面上的压缩工具就有三四种,于是使用python做了一个包含各种常见格式的文件解压缩的小工具。常见的压缩格式主要是下面的四种格式:zip 格式的...
    99+
    2023-05-14
    Python
  • 怎么用Python制作一个数据预处理小工具
    这篇文章主要讲解了“怎么用Python制作一个数据预处理小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python制作一个数据预处理小工具”吧!在我们平常使用Python进行数据...
    99+
    2023-06-15
  • 基于Python自制一个文件解压缩小工具
    经常在办公的过程中会遇到各种各样的压缩文件处理,但是呢每个压缩软件支持的格式又是不同的。 没有可以一种可以同时多种格式的并且免费的文件解压缩工具,于是我使用python的PyQt5开...
    99+
    2023-02-06
    Python文件解压缩工具 Python文件解压缩
  • 基于Python制作一个文件解压缩工具
    经常由于各种压缩格式的不一样用到文件的解压缩时就需要下载不同的解压缩工具去处理不同的文件,以至于桌面上的压缩工具就有三四种,于是使用python做了一个包含各种常见格式的文件解压缩的...
    99+
    2022-11-11
  • 基于QT制作一个简易的传输文件小工具
    最近因为一个事情很恼火,因为办公需要用到企业微信,但是企业微信只能在一个电脑上登陆,所以当别人发文件给你的时候,你只能一个电脑接收,创建共享文件夹也很麻烦,每次都需要去访问,很麻烦。...
    99+
    2022-11-12
  • 怎么利用Python实现一个论文降重工具
    这篇文章主要介绍“怎么利用Python实现一个论文降重工具”,在日常操作中,相信很多人在怎么利用Python实现一个论文降重工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么利用Python实现一个论文降...
    99+
    2023-06-20
  • 使用Python怎么制作一个信息轰炸工具
    本篇文章给大家分享的是有关使用Python怎么制作一个信息轰炸工具,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。准备阶段我们需要安装pyautogui调用库(在命令提示符下安装...
    99+
    2023-06-15
  • 怎么使用Python和ChatGPT制作一个AI实用工具
    本篇内容介绍了“怎么使用Python和ChatGPT制作一个AI实用工具”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!注册OpenAI首先需...
    99+
    2023-07-05
  • 怎么在python中利用tkinter制作一个倒计时工具
    怎么在python中利用tkinter制作一个倒计时工具?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python的五大特点是什么python的五大特点:1.简...
    99+
    2023-06-14
  • 怎么用PyQT5制作一个桌面摸鱼工具
    这篇文章主要介绍“怎么用PyQT5制作一个桌面摸鱼工具”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用PyQT5制作一个桌面摸鱼工具”文章能帮助大家解决问题。按键功能控制q 退出B 书签功能F ...
    99+
    2023-06-29
  • 一文详解如何用GPU来运行Python代码/基于Python自制一个文件解压缩小工具
    前几天捣鼓了一下Ubuntu,正是想用一下我旧电脑上的N卡,可以用GPU来跑代码,体验一下多核的快乐,感兴趣的小伙伴快跟随小编一起了解一下吧 简介 前几天捣鼓了一下Ubuntu,正是想用一下我旧电脑上的N卡,可以用GPU来跑代码,体验一下...
    99+
    2023-10-02
    python 数学建模 开发语言 程序人生 职场和发展
  • 怎么用Python设计一个多功能办公小工具
    这篇文章主要讲解了“怎么用Python设计一个多功能办公小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python设计一个多功能办公小工具”吧!UI排版布局主页通过分页栏来划分不...
    99+
    2023-06-21
  • 怎么用Python+Tkinter制作在线个性签名工具
    今天小编给大家分享一下怎么用Python+Tkinter制作在线个性签名工具的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。思...
    99+
    2023-06-29
  • 使用java怎么实现一个C盘文件统计工具
    今天就跟大家聊聊有关使用java怎么实现一个C盘文件统计工具,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。版本介绍Maven-3.3.9JDK1.8 目录结构com &nb...
    99+
    2023-06-20
  • 怎么在c#中使用WinForm制作一个图片编辑工具
    今天就跟大家聊聊有关怎么在c#中使用WinForm制作一个图片编辑工具,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 功能介绍程序主界面点击打开图片,可选择多个图片文件。图片缩略图...
    99+
    2023-06-07
  • 使用python怎么制作一个俄罗斯方块小游戏
    这期内容当中小编将会给大家带来有关使用python怎么制作一个俄罗斯方块小游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作