获取重复的文件
背景和环境说明
本程序使用
python 3.10+
机器学习,样本处理过程中会有重复的数据。这里的样本是图片
,本程序根据文件MD5
获取重复文件。
依赖包下载
pip install -U NStudyPy
使用
from NStudyPy import PyFile
if __name__ == '__main__':
PyFile.get_repeat_file(r'F:\temp\cards', is_recursive=True)
is_recursive
参数来限定是否递归子目录
核心源码
def get_repeat_file(path: str, is_recursive=True) -> dict:
"""
获取重复文件
:param path: 路径
:param is_recursive: 是否递归
:return: dict {"md5" : [file1,file2]}
"""
file_dict = dict()
for f in get_file_list(path, is_recursive):
md5 = get_md5(f)
if md5 not in file_dict:
file_dict[md5] = [f]
else:
file_dict[md5].append(f)
repeat_files = dict()
for k, v in file_dict.items():
if len(v) > 1:
repeat_files.update({
k: v})
print(f'{k} {len(v)}')
# return list(filter(lambda x: len(x) > 1, file_dict.values()))
return repeat_files
get_file_list
获取文件 , 参加下篇随笔来介绍。get_md5
获取文件MD5 , 参加下篇随笔来介绍。