如何获取文件夹中的所有文件并在python中获取MD5哈希?

Xoz*_*ozu 3 python md5

我正在尝试编写一些代码来获取文件夹中每个exe文件的md5.

我的问题是我不明白该怎么做.仅当文件夹仅包含一个文件时,它才有效.这是我的代码:

import glob
import hashlib
file = glob.glob("/root/PycharmProjects/untitled1/*.exe")

newf = str (file)
newf2 =  newf.strip( '[]' )
newf3 = newf2.strip("''")

with open(newf3,'rb') as getmd5:
    data = getmd5.read()
    gethash= hashlib.md5(data).hexdigest()
    print gethash
Run Code Online (Sandbox Code Playgroud)

我得到了结果:

a7f4518aae539254061e45424981e97c
Run Code Online (Sandbox Code Playgroud)

我想知道如何对文件夹中的多个文件执行此操作.

Ant*_*ala 8

glob.glob返回文件列表.只需使用for以下内容迭代列表:

import glob
import hashlib

filenames = glob.glob("/root/PycharmProjects/untitled1/*.exe")

for filename in filenames:
    with open(filename, 'rb') as inputfile:
        data = inputfile.read()
        print(filename, hashlib.md5(data).hexdigest())
Run Code Online (Sandbox Code Playgroud)

请注意,如果您在该目录中碰巧有一个大文件,这可能会耗尽您的内存,因此最好以较小的块读取文件(此处适用于1 MiB块):

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()

for filename in filenames:
    print(filename, md5(filename))
Run Code Online (Sandbox Code Playgroud)