1、脚本需求
删除重复的文件,包括不同文件夹内的重复文件。
2、方法步骤:
- 将所有文件都存放到一个list变量中
- 判断两个文件的内容是否一致
- 判断在很多文件中找到一对重复的文件
- 删除文件
3、代码实现:
import os
import filecmp
path = '文件夹所在路径'
# 已知路径下存在两个文件夹d1和d2
dirs = ['d1','d2']
# 将指定目录下的所有文件的路径存储到all_files变量中
def get_all_files(path,dirs):
all_files = []
for d in dirs:
cur_path = os.path.join(path,d)
files = os.listdir(cur_path)
for f in files:
all_files.append(os.path.join(cur_path,f))
return all_files
# 比较两个文件的内容是否一致
def cmp_files(x,y):
# 利用filecmp模块中的cmp函数,判断两个文件的内容是否一致。如果一致,函数返回True;如果不一致,函数返回False
if filecmp.cmp(x,y):
# 如果一致,则删除第二个,保留第一个,并输出信息
os.remove(y)
print("路径:"+y+"下的文件是重复文件,已经删除")
# 调用函数,获取文件列表
all_files = get_all_files(path,dirs)
# 用双重for循环来比较文件是否有重复
for x in all_files:
for y in all_files:
# 如果x和y不是相同文件,而且都存在,则执行后续操作
if x != y and os.path.exists(x) and os.path.exists(y):
# 比较两个文件的内容是否一致
cmp_files(x,y)