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

Python glob递归遍历目录并计算MD5时递归失效问题求助

问题根因

  • 核心错误:return dirs 语句放置在for循环内部,第一次遍历到第一个文件完成MD5计算后就会直接返回结果,不会执行后续遍历逻辑,所以看起来像是递归失效。
  • 匹配规则问题:你使用的**/*.*匹配规则只会筛选名称带.的文件,无后缀的文件、纯目录都会被过滤,若需遍历所有文件,要调整为**/*。
  • 潜在异常风险:glob.iglob开启递归后会返回目录路径,直接对目录执行open()操作会触发报错,需要增加文件类型判断过滤目录。

修复后可正常运行的代码

import glob
import hashlib
import os

def get_original_dir(target_dir):
    dirs = ['File,Md5!']
    # 调整匹配规则覆盖所有路径
    files = glob.iglob(f"{target_dir}/**/*", recursive=True)
    for file in files:
        # 仅处理文件,跳过目录
        if not os.path.isfile(file):
            continue
        with open(file, "rb") as f:
            file_hash = hashlib.md5()
            while chunk := f.read(8192):
                file_hash.update(chunk)
        dirs.append(f"{file},{file_hash.hexdigest()}!")
    # 所有遍历完成后再返回结果
    return dirs

内容的提问来源于stack exchange,提问作者Kyle Sponable

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:15:03