You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:批量读取文件生成MD5校验值并存储的循环实现

批量生成文件MD5校验值并保存结果

以下是完整的实现代码,可批量处理指定目录下的文件,生成MD5校验值并将结果按「文件名、MD5校验值」两列格式保存:

import os
import hashlib

# 替换为你的目标文件目录路径
target_dir = "/指定的文件目录路径"
# 替换为你要保存结果的文件路径
output_file = "md5校验结果.txt"

results = []

# 遍历目标目录下的所有条目
for filename in os.listdir(target_dir):
    file_full_path = os.path.join(target_dir, filename)
    # 仅处理文件,跳过子目录
    if os.path.isfile(file_full_path):
        # 初始化MD5哈希对象
        hasher = hashlib.md5()
        with open(file_full_path, 'rb') as f:
            # 分块读取大文件,避免内存占用过高
            while chunk := f.read(4096):
                hasher.update(chunk)
        # 获取最终的MD5十六进制字符串
        md5_value = hasher.hexdigest()
        # 按「文件名\tMD5值」格式存储
        results.append(f"{filename}\t{md5_value}")

# 将结果写入输出文件
with open(output_file, 'w', encoding='utf-8') as f:
    f.write("文件名\tMD5校验值\n")  # 写入表头
    f.write('\n'.join(results))

关键细节说明

  • 文件遍历逻辑:用os.listdir获取目录下所有内容,通过os.path.isfile筛选出文件,避免处理子目录;如果需要只处理特定后缀的文件(如.txt),可改用glob.glob(f"{target_dir}/*.txt")来精准匹配。
  • MD5生成修正:你的原有代码缺少hashlib.md5()的对象初始化,且hasher.update()没有返回值,不能直接赋值给变量,必须通过hasher.hexdigest()获取最终的MD5字符串。另外采用分块读取文件的方式,避免大文件一次性读取导致内存溢出。
  • 结果格式处理:用制表符分隔两列,既保证可读性,也方便后续导入表格工具(如Excel)进行分析。

内容的提问来源于stack exchange,提问作者Mandeep Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:52:11