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

如何用Python遍历目录及子目录获取所有文件的MD5哈希值

代码调整方案
  • 替换原有glob.glob写法:添加**通配符匹配所有层级路径,开启recursive=True参数实现递归遍历所有子目录
  • 新增文件类型判断:递归遍历会返回目录路径,调用os.path.isfile()过滤仅保留文件,避免打开目录时报错
  • 优化性能细节:将单次文件的MD5计算结果存为变量,避免重复计算两次;用with上下文管理器打开病毒库文件,自动处理资源关闭

修改后完整代码如下:

import hashlib
import glob
import os.path

# 开启递归遍历所有子目录
filenames = glob.glob('C:/Users/User/Desktop/irustesting/**/*', recursive=True)

def md5(fname):
    hash_md5 = hashlib.md5()
    with open(fname, "rb") as f:
        for chunk in iter(lambda: f.read(2 ** 20), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()

# 用with上下文管理器自动关闭文件
with open('C:/FYP/SecuCOM2022/viruslist.txt','rt') as viruslist:
    virusinside = [l.rstrip() for l in viruslist]
virus="detected"
novirus="clear"

for filename in filenames:
    # 过滤仅处理文件,跳过目录
    if not os.path.isfile(filename):
        continue
    # 仅计算一次MD5,复用结果
    current_md5 = md5(filename)
    print(filename, current_md5)
    if current_md5 in virusinside:
        print(virus)
        os.remove(filename)
    else:
        print(novirus)

内容的提问来源于stack exchange,提问作者Jun Jie Ong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:36:03