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

如何编写生成目录文件哈希签名的程序?现有代码仅输出哈希值

解决文件哈希签名生成问题:输出文件名与对应哈希值

你这段代码已经有了核心思路,但存在几个关键问题导致它只能输出单一哈希值,没法正确遍历目标目录的所有文件。我帮你修正并优化一下:

import os
import hashlib

target_path = "/home/ec2-user/environment"

for filename in os.listdir(target_path):
    # 拼接完整文件路径,避免当前工作目录的干扰
    file_path = os.path.join(target_path, filename)
    # 跳过目录,只处理实际文件
    if os.path.isfile(file_path):
        hasher = hashlib.md5()
        # 打开当前遍历到的文件,替换原代码里的固定文件名
        with open(file_path, 'rb') as afile:
            # 分块读取优化:应对大文件,避免内存占用过高
            buf = afile.read(65536)  # 每次读取64KB
            while len(buf) > 0:
                hasher.update(buf)
                buf = afile.read(65536)
        # 同时输出文件名和对应的哈希值
        print(f"{filename}: {hasher.hexdigest()}")

核心改进点说明:

  • 完整路径处理:用os.path.join拼接目标路径和文件名,确保判断文件/目录、打开文件时都指向目标目录的内容,而不是脚本所在的当前工作目录。
  • 动态遍历文件:把原代码里硬编码的'39802.jpeg'替换成遍历到的file_path,这样才能逐个处理目录里的所有文件。
  • 大文件兼容:改成分块读取文件,就算目录里有几GB的大文件,也不会一次性把整个文件塞进内存,避免内存溢出。
  • 格式化输出:用f-string把文件名和哈希值绑定输出,完全符合你要的“文件名+对应哈希值”的需求。

如果需要用其他哈希算法,比如SHA-256,只需要把hashlib.md5()改成hashlib.sha256()就行。

内容的提问来源于stack exchange,提问作者Blake Spiretta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:14:06