我正在使用Python开发一个项目。我有一个文件列表,我想得到md5checksums。然后它将校验和存储在另一个列表中。然后它再次检查并检查它们是否不同。我有使校验和工作的功能,但现在我无法弄清楚如何将它们添加到列表中。这是我正在尝试的
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个这样的列表:
['729aebf5b3a841d3ef815e297ae2ce07']
['729aebf5b3a841d3ef815e297ae2ce07', '1c9bc3339234fa7d551bdb8da004c8ad']
['729aebf5b3a841d3ef815e297ae2ce07', '1c9bc3339234fa7d551bdb8da004c8ad', '0c01d98119386db13beb1bfdbae7ba2b']
['729aebf5b3a841d3ef815e297ae2ce07', '1c9bc3339234fa7d551bdb8da004c8ad', '0c01d98119386db13beb1bfdbae7ba2b', 'b51c93a2f965b75de903d159720dd6e6']
我想要做的是将每个哈希校验和存储在md5s列表中,然后阅读以查看它们是否不同。
答案 0 :(得分:2)
def getmd5(filename, ....):
return m.hexdigest()
md5s = dict()
for fname in filenames:
md5s[fname] = getmd5(fname)
print md5s
答案 1 :(得分:1)
您没有4个列表。每次调用md5s
后,您都会打印getmd5
的内容,这会向列表中添加一个md5哈希值。你碰巧这样做了4次,因为你的文件列表中有4个项目。
这意味着您有一个列表,它包含最后一个for循环的所有摘要。您正在构建列表的for循环内打印,因此您无法理解它。在打印之前删除缩进以查看所需格式的结果。