用Python自动清理电脑内重复文件,只要10行代码就够了

给定一个文件夹,使用Python检查给定文件夹下有无文件重复,若存在重复则删除

主要涉及的知识点有:

  • os模块综合应用

  • glob模块综合应用

  • 利用filecmp模块比较两个文件

步骤分析

该程序实现的逻辑可以具化为:

遍历获取给定文件夹下的所有文件,然后通过嵌套循环两两比较文件是否相同,如果相同则删除后者。

实现问题的关键就变成了

如何判断两个文件是否相同?

在这里我们可以使用filecmp模块,来看看官方的介绍文档:

  • filecmp.cmp(f1, f2, shallow=True)

  • 比较名为f1和f2的文件,如果它们似乎相等则返回True,否则返回False

  • 如果shallow为真,那么具有相同os.stat()签名的文件将会被认为是相等的。否则,将比较文件的内容。

所以可以这样使用

# 假设x和y两个文件是相同的
print(filecmp.cmp(x, y))
# True

解决了这个问题,我们就可以开始写代码了!

Python实现

导入需要的库并设置目标文件夹路径

import os
import glob
import filecmp

dir_path = r'C:\\xxxx'

接着遍历获取所有文件的绝对路径,我们可以利用glob模块的通配符结合recursive参数即可完成,框架如下:

for file in glob.glob(path + '/**/*', recursive=True):
    pass

由于遍历获取每一个文件或者文件夹后,需要判断是否是文件,如果是文件则可能将绝对路径存放到列表中,这里需要再完成两个事情:

  • 首先创建一个空列表,后面用list.append(i)添加文件路径

  • 接着利用os.path.isfile(i)判断是否是文件,返回True则执行添加元素的操作

具体代码如下

#Python学习交流群:778463939

file_lst = []

for i in glob.glob(dir_path + '/**/*', recursive=True):
    if os.path.isfile(i):
        file_lst.append(i)

上一步我们获取了目标文件夹下的所有文件路径,接下来就可以嵌套遍历这个路径列表,其中filecmp.cmp进行文件判断,os.remove进行文件删除

for x in file_lst:
    for y in file_lst:
        if x != y:
            if filecmp.cmp(x, y):
                os.remove(y)

这里的代码已经实现了大致逻辑,但有一个细节需要考虑到:有可能循环到文件已经被前面的判断删除了,导致os.remove(file)由于文件不存在而报错

因此,可以用os.path.exists对文件存在进行判断,如下所示:

for x in file_lst:
    for y in file_lst:
        if x != y and os.path.exists(x) and os.path.exists(y):
            if filecmp.cmp(x, y):
                os.remove(y)

这样,一个简易的文件去重小程序就完成了,完整代码如下:

import os
import glob
import filecmp

dir_path = r'C:\xxxx'

file_lst = []

for i in glob.glob(dir_path + '/**/*', recursive=True):
    if os.path.isfile(i):
        file_lst.append(i)

for x in file_lst:
    for y in file_lst:
        if x != y and os.path.exists(x) and os.path.exists(y):
            if filecmp.cmp(x, y):
                os.remove(y)

写在最后

通过本文的Python自动化脚本制作过程,我们可以再次体会Python办公自动化的强大

(0)

相关推荐

  • Python十大文件骚操作!!

    来源:Python数据科学 作者:东哥起飞 日常对于批量处理文件的需求非常多,用Python写脚本可以非常方便地实现,但在这过程中难免会和文件打交道,第一次做会有很多文件的操作无从下手,只能找度娘. ...

  • 移动并重命名2000个文件,Python,3秒

    大家好,又到了Python办公自动化(偷懒)专题 . 今天介绍的案例是如何利用Python来自动化移动.修改.重命名文件/夹,这样的操作在日常办公中经常会用到,若能掌握用Python实现将会大大提高效 ...

  • python 批量生成目录

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/python 批量生成目录 作者:融水公子 rsgz Python3 教程 python教程 http://www.rsgz.top/post/9 ...

  • python:os.path - 常用路径操作模块

    应该是所有程序都需要用到的路径操作,不废话,直接开始 以下是常用总结,当你想做路径相关时,首先应该想到的是这个模块,并知道这个模块有哪些主要功能,获取.分割.拼接.判断.获取文件属性. 1.路径获取 ...

  • 如何 Import 自定义的 Python 模块?

    (给Python开发者加星标,提升Python技能) 来源:Be_melting https://blog.csdn.net/lys_828/article/details/106176229 [导语 ...

  • python笔记15-ini配置文件(configparser)

    前言 使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是configParser configPars ...

  • 用Python写几行代码,一分钟搞定一天工作量,同事直呼:好家伙!

    前几天有一个读者说最近要整理几千份文件,头都要整秃了,不知道能不能用Python解决,我们来看一下,你也可以思考一下. 由于涉及文件私密所以具体内容已做脱敏处理. 大概是这样,一个文件夹下有多份会议通 ...

  • 让Python在后台自动解压各种压缩文件!

      一.需求描述 编写一个Python程序,每次下载压缩包形式的文件后,自动将内部文件解压到当前文件夹后将压缩包删除,通过本案例可以学到的知识点: os 模块综合应用 glob 模块综合应用 利用 g ...

  • 黑客十秒教你清理电脑内的垃圾文件

    电脑用的久了变得又卡又慢,黑客教你十秒清理电脑里的垃圾文件,提升运行速度#Python #电脑小技巧 电脑用的久了就会产生很多垃圾文件,变得又卡又慢黑客简单一招教你快速心率安排首先打开运行框,输入这个 ...

  • 怎么把电脑内的文件复制到U盘

    操作方法 01 第一种方法:找到电脑中我们需要复制的电脑文件.然后在文件上右击鼠标,展开菜单栏. 02 在展开的菜单栏内,依次点击选择箭头所示的"发送到"--我们的U盘名. 03 ...

  • 手机电脑互传文件的 10 个免费工具,比微信、QQ 更好用 | 领客专栏 · 電腦玩物 | 爱范儿

    A 君注:说到文件即时传输,我想大部分人第一时间都会想起用微信或者 QQ 传输.毫无疑问这是方便的方式,但也有其文件大小.占据手机容量等限制.今天 AppSo 分享 10 款 P2P 传输工具,相信你 ...

  • 手机电脑互传文件的 10 个免费工具

    我有时会研究「P2P 传输工具」,这类服务通过浏览器或者便利的手机 app,便能在不同设备间进行快捷文件传输.今天就将其整理成一篇文章,并分别介绍每个服务的特殊之处,以满足不同需求的朋友. 1. Xe ...

  • Python提取 “Excel文本框” 内容,这个需求头一次见,1000个表,10行代码!

    前天 本文介绍 说实话,这个需求头一次碰到,我相信对于大多数朋友来说,也是头一次碰到."提取excel文本框中的内容",对,你没有听错!我也不知道你碰到过没有,但是这确实是一位朋友 ...

  • 实战:使用 Python 用不到 10 行代码计算汽车数量

    重磅干货,第一时间送达 在这篇文章中,将教你如何使用 Python 用 10 行代码构建自己的汽车计数器程序.本文所依赖的 python 库: opencv-pythoncvlib matplotli ...

  • python爬虫实战:利用scrapy,短短50行代码下载整站短视频

    近日,有朋友向我求助一件小事儿,他在一个短视频app上看到一个好玩儿的段子,想下载下来,可死活找不到下载的方法.这忙我得帮,少不得就抓包分析了一下这个app,找到了视频的下载链接,帮他解决了这个小问题 ...

  • 电脑版微信多开,我只要这3行代码就够了!

    Hi,大家好,我是小雨!在我们日常的工作和生活经常会遇到同时使用多个微信的情况,一个用来工作一个私密交流.但是电脑版的微信每次只能登录一个微信号.怎么才能实现电脑版微信的多开呢?实际上,要实现电脑版微 ...

  • 只需 10 行代码,Python 教你自制屏幕翻译工具,高效办公

    只需 10 行代码,Python 教你自制屏幕翻译工具,高效办公