python 存储文件 MD5去重
时间: 2024-06-05 08:04:53 浏览: 95
使用md5对文件去重 python
Python 是一种高级编程语言,可以用于各种编程任务,包括文件处理和数据处理。MD5是一种常用的哈希算法,可以将任意长度的数据“压缩”成一个固定长度的字符串。在文件处理中,可以使用MD5算法来对文件进行去重。
下面是一种基于MD5哈希算法的文件去重方法:
1. 读取文件列表,并对每个文件计算MD5值。
2. 将MD5值作为键,文件路径作为值,存储到一个字典中。
3. 遍历字典,将相同MD5值的文件路径放入一个列表中。
4. 如果列表中有多个文件路径,则这些文件是重复的,可以进行去重操作。
以下是一份示例代码:
``` python
import os
import hashlib
# 获取指定目录下所有文件的MD5值
def get_md5(filepath):
with open(filepath, 'rb') as f:
md5_obj = hashlib.md5()
md5_obj.update(f.read())
hash_code = md5_obj.hexdigest()
return hash_code
# 获取指定目录下所有文件的MD5值,并将结果存储到字典中
def get_md5_dict(folder):
md5_dict = {}
for root, dirs, files in os.walk(folder):
for filename in files:
filepath = os.path.join(root, filename)
md5 = get_md5(filepath)
if md5 in md5_dict:
md5_dict[md5].append(filepath)
else:
md5_dict[md5] = [filepath]
return md5_dict
# 打印重复文件列表
def print_duplicate_files(md5_dict):
for md5, files in md5_dict.items():
if len(files) > 1:
print('MD5:', md5)
for filepath in files:
print(' ', filepath)
# 测试代码
if __name__ == '__main__':
folder = '/path/to/folder'
md5_dict = get_md5_dict(folder)
print_duplicate_files(md5_dict)
```
阅读全文