Art*_*tur 3 python hash checksum md5 sha1
我浏览了几个关于在 Python 中计算文件校验和的主题,但没有一个主题回答了关于多个文件中的一个总和的问题。我在子目录中有几个文件,想确定其中一个或多个文件是否有任何更改。有没有办法从多个文件中生成一个总和?
编辑:这是我获取总和列表的方式:
checksums = [(fname, hashlib.md5(open(fname, 'rb').read()).digest()) for fname in flist]
Run Code Online (Sandbox Code Playgroud)
比阿图尔的回答更简洁。没有必要特别对待第一个元素。
def calculate_checksum(filenames):
hash = hashlib.md5()
for fn in filenames:
if os.path.isfile(fn):
hash.update(open(fn, "rb").read())
return hash.digest()
Run Code Online (Sandbox Code Playgroud)
(os.path.isfile()
如果你愿意,你可以删除。)
所以我做到了:) 这样就为文件列表生成了一个哈希和。
hash_obj = hashlib.md5(open(flist[0], 'rb').read())
for fname in flist[1:]:
hash_obj.update(open(fname, 'rb').read())
checksum = hash_obj.digest()
Run Code Online (Sandbox Code Playgroud)
感谢 PM 2Ring 的意见!
请注意,md5 已被破解,因此仅将其用于非安全关键目的。