news 2026/7/19 22:42:59

10行Python代码自动清理电脑内重复文件,解放双手!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10行Python代码自动清理电脑内重复文件,解放双手!

前言

今天分享一个系统层面的自动化案例:

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

主要涉及的知识点有:

  • os模块综合应用
  • glob模块综合应用
  • 利用filecmp模块比较两个文件
步骤分析

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

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

实现问题的关键就变成了?

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

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

  • filecmp.cmp(f1, f2, shallow=True)
  • 比较名为f1和f2的文件,如果它们似乎相等则返回True,否则返回False
  • 如果shallow为真,那么具有相同os.stat()签名的文件将会被认为是相等的。否则,将比较文件的内容。

所以可以这样使用?

代码语言:javascript

AI代码解释

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

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

Python实现

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

代码语言:javascript

AI代码解释

import os import glob import filecmp dir_path = r'C:\\xxxx'

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

代码语言:javascript

AI代码解释

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

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

  1. 首先创建一个空列表,后面用list.append(i)添加文件路径
  2. 接着利用os.path.isfile(i)判断是否是文件,返回True则执行添加元素的操作

具体代码如下

代码语言:javascript

AI代码解释

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

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

代码语言:javascript

AI代码解释

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对文件存在进行判断,如下所示:

代码语言:javascript

AI代码解释

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)

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

代码语言:javascript

AI代码解释

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办公自动化的强大,同时本次实现的功能可以和之前?自动整理文件的脚本结合使用!

如果对本文的代码和数据感兴趣可以在后台回复自动化获取。最后还是希望大家能够理解Python办公自动化的一个核心就是批量操作-解放双手,让复杂的工作自动化!

今天的文章就到这里,原创不易,如果喜欢的话请给我一波三连支持吧(在看、转发、留言)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 22:42:09

鸿蒙 Flutter Align与Center对齐组件:各种对齐方式详解

作者:高红帆(Math_teacher_fan) 仓库地址:https://gitcode.com/feng8403000/FlutterfromBeginnertoAdvancedForHarmonyOS.git 联系邮箱:372699828qq.com 引言 在Flutter开发中,对齐组件是构建布局的基础。…

作者头像 李华
网站建设 2026/7/19 22:40:00

毕业后的日子里,请大步向前!

先简单介绍我自己,本人是一个人文社科类的二本山东毕业生,因为不好找工作,但也不愿在社会中被环境磨平棱角,其实都怪自己醒的太晚,记得上大学那会,对计算机一窍不通,当真正面临就业时候才发现&a…

作者头像 李华
网站建设 2026/7/19 22:39:54

Git 常用命令全总结|从入门到进阶,一篇搞定开发所有场景

作为开发者,Git 是日常工作中必不可少的版本控制工具。不管是单人开发还是团队协作,熟练掌握 Git 命令都能大幅提升工作效率,避免版本冲突、代码丢失等问题。本文将按使用场景分类,总结 Git 核心命令、进阶命令及避坑技巧&#xf…

作者头像 李华
网站建设 2026/7/19 22:39:51

如何轻松批量下载B站视频?BilibiliDown完整使用指南

如何轻松批量下载B站视频?BilibiliDown完整使用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/…

作者头像 李华
网站建设 2026/7/19 22:39:13

SRWE窗口编辑器:5分钟掌握专业级窗口分辨率自定义技术

SRWE窗口编辑器:5分钟掌握专业级窗口分辨率自定义技术 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE SRWE窗口编辑器是一款革命性的开源工具,专为游戏玩家、内容创作者和效率追求者设计…

作者头像 李华
网站建设 2026/7/19 22:37:04

FreeRTOS xTaskCreate 最后一个参数传地址与NULL的区别详解

前言 初学 FreeRTOS 创建任务时,很容易遇到一段代码:部分任务创建时第六个参数传入任务句柄变量地址,另一部分直接填写 NULL,二者写法都能正常创建任务,但底层用途完全不同。 先一句话说清区别:第六个参数…

作者头像 李华