在lis中计算文件的MD5校验和

2024-09-22 16:31:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个Python项目。我有一个文件列表,我想得到md5检查。然后它将校验和存储在另一个列表中。然后它再次检查,看看它们是否不同。我有使校验和工作的功能,但现在我不知道如何将它们添加到列表中。这就是我要做的


import sys, hashlib
files = ['/home/file1', '/home/file2', '/home/file3', '/etc/passwd']
md5s = []
def getmd5(file, ex="", inc=""):
    m = hashlib.md5()
    try:
        fd = open(file,"rb")
    except IOError:
        print "Can't retrieve MD5sum for ", file
        pass
    content = fd.readlines()
    fd.close()
    for eachLine in content:
        if ex and eachLine.startswith(ex):
            continue
        m.update(eachLine)
    m.update(inc)
    a = m.hexdigest()
    md5s.append(a)

for i in lists: getmd5(i) print md5s

但是当我试着这样做的时候,我得到了4个这样的列表: ^{pr2}$

我想做的是将每个哈希校验和存储在md5s列表中,然后读取它们是否不同。在


Tags: home列表forcontent校验md5exfile
2条回答
def getmd5(filename, ....):

  return m.hexdigest()


md5s = dict()

for fname in filenames:
   md5s[fname] = getmd5(fname)

print md5s

你没有4张单子。每次调用getmd5后,都会打印md5s的内容,该操作会向列表中添加一个md5哈希。你刚好做了4次,因为你的文件列表中有4项。在

这意味着您有一个列表,它包含最后一个for循环末尾的所有摘要。您正在for循环中打印构造列表,因此您无法理解它。删除打印前的缩进,以查看所需格式的结果。在

相关问题 更多 >