在一个文件夹中,有3000个json文件,我想将md5相同的json文件提取到同一个文件夹中,python实现

发布时间 2023-05-26 08:50:45作者: 海_纳百川

以下是一个使用Python实现的示例代码,可以将具有相同MD5哈希值的JSON文件提取到同一个文件夹中:

import os
import shutil
import hashlib

# 用于计算文件的MD5哈希值
def calculate_md5(file_path):
    with open(file_path, 'rb') as f:
        data = f.read()
        md5_hash = hashlib.md5(data).hexdigest()
    return md5_hash

# 输入文件夹路径和目标文件夹路径
input_folder = '/path/to/input/folder'
output_folder = '/path/to/output/folder'

# 创建目标文件夹
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 存储MD5哈希值和对应文件路径的字典
md5_dict = {}

# 遍历输入文件夹中的所有文件
for file_name in os.listdir(input_folder):
    file_path = os.path.join(input_folder, file_name)

    # 仅处理JSON文件
    if file_name.endswith('.json') and os.path.isfile(file_path):
        # 计算文件的MD5哈希值
        md5_hash = calculate_md5(file_path)

        # 将文件路径添加到对应的MD5哈希值列表中
        if md5_hash in md5_dict:
            md5_dict[md5_hash].append(file_path)
        else:
            md5_dict[md5_hash] = [file_path]

# 提取具有相同MD5哈希值的文件到同一个文件夹中
for md5_hash, file_paths in md5_dict.items():
    if len(file_paths) > 1:
        target_folder = os.path.join(output_folder, md5_hash)

        # 创建目标文件夹
        if not os.path.exists(target_folder):
            os.makedirs(target_folder)

        # 将文件复制到目标文件夹中
        for file_path in file_paths:
            shutil.copy(file_path, target_folder)

该代码会遍历输入文件夹中的所有JSON文件,计算每个文件的MD5哈希值,并将具有相同哈希值的文件提取到以哈希值命名的文件夹中。如果文件夹不存在,代码会自动创建它。