【发布时间】:2015-09-27 00:53:00
【问题描述】:
我正在尝试使用 Python 以递归方式打印目录中文件的 md5 哈希,但我的 open 命令中的变量产生错误哈希时遇到问题。这是我的代码:
import os
import hashlib
blocksize = 65536
md5_hash = hashlib.md5()
for root, dirs, files in os.walk('/path/to/folder'):
for filename in files:
os.chdir(root)
with open(filename, 'rb') as cur_file:
print filename
while True:
data = cur_file.read(blocksize)
if not data:
break
md5_hash.update(data)
print md5_hash.hexdigest()
如果我将“文件名”变量更改为特定文件,如下所示:
with open('nameoffile.txt', 'rb') as cur_file:
然后产生了正确的哈希值,这让我相信我的 for 循环在某种程度上是错误的。我在正确的轨道上吗?我可以做些什么来修复变量或 for 循环以使其正常工作?
【问题讨论】:
-
您想要 individual 文件的 md5 吗?因为目前你的代码会计算所有文件串联的 md5。