找出文件名相似的文件

为了写稿子,以往收集过很多资料。
经常会出现一个情况,查找文件的时候,发现相同的内容可能存了好几份。
可能的原因是我喜欢批量收集,不同渠道可能回反复发布同一个内容。
其实存点文档网页啥的也不占啥空间,就是本地一搜索,出来好几个结果令人恼火。
所以用ChatGPT-4写了个python代码,经过几次调试,结果令人满意。
如果文件比较多,可能会运行时间比较长,请耐心等待。
运行的结果会以txt和csv文件形式和py脚本放在同一个目录下。
import os
import difflib
import csv
# 你想要开始查找的目录
start_dir = '/目录请填写在这里'
print(f'Starting directory: {start_dir}') # 打印开始目录
# 将所有文件名及其路径存入列表
file_list = []
for dirpath, dirnames, filenames in os.walk(start_dir):
for filename in filenames:
file_list.append(os.path.join(dirpath, filename))
print(f'Found {len(file_list)} files') # 打印找到的文件数
# 准备存储相似文件对的列表
similar_files = []
for i in range(len(file_list)):
for j in range(i+1, len(file_list)):
# 使用 difflib 库的 SequenceMatcher 函数来比较两个文件名的相似度
seq = difflib.SequenceMatcher(a=os.path.basename(file_list[i]), b=os.path.basename(file_list[j]))
# 如果相似度大于0.8(这个值可以根据需要调整),则将这两个文件名添加到结果列表
if seq.ratio() > 0.8:
similar_files.append([file_list[i], file_list[j]])
print(f'Found {len(similar_files)} pairs of similar files') # 打印找到的相似文件对数
# 获取脚本所在的目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 将结果写入文本文件
with open(os.path.join(script_dir, 'similar_files.txt'), 'w') as f:
for pair in similar_files:
f.write(f'Found similar files: {pair[0]} and {pair[1]}\n')
# 将结果写入 CSV 文件
with open(os.path.join(script_dir, 'similar_files.csv'), 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['File 1', 'File 2']) # 写入表头
writer.writerows(similar_files) # 写入数据


![[ai草稿]惊人发现!科学家破译抹香鲸的"字母表"](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fstock%2Funsplash%2F5u6bz2tYhX8%2Fupload%2F432050ab33a303048d5c4bab1cf2c854.jpeg&w=3840&q=75)
