10 行 Python 代码实现,电脑自动清理电脑内重复文件

简介: 给定一个文件夹,使用 Python 检查给定文件夹下有无文件重复,若存在重复则删除。主要涉及的知识点有:os 模块综合应用glob 模块综合应用利用 filecmp 模块比较两个文件

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

主要涉及的知识点有:

os 模块综合应用
glob 模块综合应用
利用 filecmp 模块比较两个文件
步骤分析
该程序实现的逻辑可以具化为:

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

实现问题的关键就变成了:point_down:

如何判断两个文件是否相同?
在这里我们可以使用 filecmp 模块,来看看官方的介绍文档:

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

假设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 则执行添加元素的操作
具体代码如下

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

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

相关文章
|
10天前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
26天前
|
监控 算法 安全
深度洞察内网监控电脑:基于Python的流量分析算法
在当今数字化环境中,内网监控电脑作为“守城卫士”,通过流量分析算法确保内网安全、稳定运行。基于Python的流量分析算法,利用`scapy`等工具捕获和解析数据包,提取关键信息,区分正常与异常流量。结合机器学习和可视化技术,进一步提升内网监控的精准性和效率,助力企业防范潜在威胁,保障业务顺畅。本文深入探讨了Python在内网监控中的应用,展示了其实战代码及未来发展方向。
|
22天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
20天前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
50 20
|
2月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
78 33
|
26天前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
|
27天前
|
存储 JSON 对象存储
如何使用 Python 进行文件读写操作?
大家好,我是V哥。本文介绍Python中文件读写操作的方法,包括文件读取、写入、追加、二进制模式、JSON、CSV和Pandas模块的使用,以及对象序列化与反序列化。通过这些方法,你可以根据不同的文件类型和需求,灵活选择合适的方式进行操作。希望对正在学习Python的小伙伴们有所帮助。欢迎关注威哥爱编程,全栈路上我们并肩前行。
|
1月前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
2月前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
69 20
|
2月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
51 10

热门文章

最新文章