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 办公自动化的一个核心就是批量操作解放双手,让复杂的工作自动化!

相关文章
|
1天前
|
数据处理 Python
Python 高级技巧:深入解析读取 Excel 文件的多种方法
在数据分析中,从 Excel 文件读取数据是常见需求。本文介绍了使用 Python 的三个库:`pandas`、`openpyxl` 和 `xlrd` 来高效处理 Excel 文件的方法。`pandas` 提供了简洁的接口,而 `openpyxl` 和 `xlrd` 则针对不同版本的 Excel 文件格式提供了详细的数据读取和处理功能。此外,还介绍了如何处理复杂格式(如合并单元格)和进行性能优化(如分块读取)。通过这些技巧,可以轻松应对各种 Excel 数据处理任务。
27 16
|
5天前
|
存储 Python
一文让你搞懂 Python 的 pyc 文件
一文让你搞懂 Python 的 pyc 文件
28 15
|
7天前
|
人工智能 IDE 开发工具
Python实行任意文件的加密—解密
Python实行任意文件的加密—解密
16 2
|
8天前
|
人工智能 IDE 开发工具
Python实行任意文件的加密—解密
Python实行任意文件的加密—解密
16 1
|
7天前
|
UED Python
Python requests库下载文件时展示进度条的实现方法
以上就是使用Python `requests`库下载文件时展示进度条的一种实现方法,它不仅简洁易懂,而且在实际应用中非常实用。
19 0
|
21天前
|
人工智能 数据挖掘 数据处理
揭秘Python编程之美:从基础到进阶的代码实践之旅
【9月更文挑战第14天】本文将带领读者深入探索Python编程语言的魅力所在。通过简明扼要的示例,我们将揭示Python如何简化复杂问题,提升编程效率。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编码世界的大门。让我们开始这段充满智慧和乐趣的Python编程之旅吧!
|
5月前
|
算法 编译器 开发者
如何提高Python代码的性能:优化技巧与实践
本文探讨了如何提高Python代码的性能,重点介绍了一些优化技巧与实践方法。通过使用适当的数据结构、算法和编程范式,以及利用Python内置的性能优化工具,可以有效地提升Python程序的执行效率,从而提升整体应用性能。本文将针对不同场景和需求,分享一些实用的优化技巧,并通过示例代码和性能测试结果加以说明。
|
2天前
|
大数据 Python
Python 高级编程:深入探索高级代码实践
本文深入探讨了Python的四大高级特性:装饰器、生成器、上下文管理器及并发与并行编程。通过装饰器,我们能够在不改动原函数的基础上增添功能;生成器允许按需生成值,优化处理大数据;上下文管理器确保资源被妥善管理和释放;多线程等技术则助力高效完成并发任务。本文通过具体代码实例详细解析这些特性的应用方法,帮助读者提升Python编程水平。
20 5
|
2月前
|
机器学习/深度学习 Python
时间序列特征提取:从理论到Python代码实践
时间序列是一种特殊的存在。这意味着你对表格数据或图像进行的许多转换/操作/处理技术对于时间序列来说可能根本不起作用。
48 1
时间序列特征提取:从理论到Python代码实践
|
29天前
|
机器学习/深度学习 人工智能 算法
探索人工智能:机器学习的基本原理与Python代码实践
【9月更文挑战第6天】本文深入探讨了人工智能领域中的机器学习技术,旨在通过简明的语言和实际的编码示例,为初学者提供一条清晰的学习路径。文章不仅阐述了机器学习的基本概念、主要算法及其应用场景,还通过Python语言展示了如何实现一个简单的线性回归模型。此外,本文还讨论了机器学习面临的挑战和未来发展趋势,以期激发读者对这一前沿技术的兴趣和思考。
下一篇
无影云桌面