我在我正在编写的脚本中使用 hashlib 函数,我无法让它获取我指向的文件 - 它只返回 0kb 文件的哈希值d41d8cd98f00b204e9800998ecf8427e
。
我这样称呼它:文件的完整路径字符串fHash=md5Checksum(f)
在哪里。f
md5Checksum 函数是从这里的一个提升:http: //www.joelverhagen.com/blog/2011/02/md5-hash-of-file-in-python/我已经用显式类型直接测试了第二个示例文件的路径,它返回正确的哈希值。
我也以os.path.getsize
相同的方式(fSize=os.path.getsize(f)
)使用该方法,并且正确地拾取文件。
当我f
在代码中转储字符串的内容并将其与显式键入的路径进行比较时,我注意到它'
在字符串周围缺少标记:
/home/.../(500) Days of Summer[2009]/11 - Regina Spektor - Hero.mp3
来自“打印 f”
并从显式输入的路径:
print 'The MD5 checksum of text.txt is', md5Checksum('/home/.../deduper/test.txt')
(有效)
如果我手动'
向路径添加标记,则代码会失败:
IOError: [Errno 2] No such file or directory: "'/home/.../(500) Days of Summer[2009]/11 - Regina Spektor - Hero.mp3'"
这让我怀疑我没有正确通过路径。如果这很重要,我在一个 ubuntu 盒子上。
编辑
我是个小丑。我已经坚持了几天,它只是通过将它发布在这里并检查我注意到的缩进我已经在md5Checker方法上搞砸了其中一个......我已经修复了它,这完全有效。谢谢大家让我检查....(作为记录,我m.update(data)
在休息时内联了线路。现在不行了,是吧....:s
def md5Checksum(filePath):
fh = open(filePath, 'rb')
m = hashlib.md5()
# print "File being hashed: " + filePath
while True:
data = fh.read(8192)
if not data:
break
m.update(data)
return m.hexdigest()