Python自动清理重复文件:利用os、glob与filecmp模块实现
本文介绍如何使用Python自动清理指定文件夹下的重复文件。通过结合[[wp:a0]]、[[wp:a1]]和[[wp:a2]]模块,遍历获取文件路径并两两比较内容。文章详细讲解了利用[[wp:a3]]模块判断文件是否相同的方法,包括[[wp:a4]]与[[wp:a5]]返回值及[[wp:a6]]参数对[[wp:a7]]签名比较的影响。代码实现了路径获取、列表过滤及去重删除逻辑,并处理了文件被提前删除时的[[wp:a21]]存在性检查,确保脚本稳定运行。
Python自动清理重复文件:利用os、glob与filecmp模块实现
前言
大家好,欢迎回到Python办公自动化系列教程。
今天我们将分享一个系统层面的自动化处理案例。
目标是:给定一个文件夹,使用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代码实现与细节处理
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实现自动清理重复文件的详细内容,更多关于Python清理重复文件的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









