Python - hashlib不会“拾取”例程中的文件

时间:2012-08-22 09:17:35

标签: python hashlib

我正在使用我正在编写的脚本中的hashlib函数,我无法将它指向我所指向的文件 - 它只返回0kb文件的哈希值d41d8cd98f00b204e9800998ecf8427e

我这样称呼它:fHash=md5Checksum(f)其中f是文件的完整路径字符串。

md5Checksum func是从这里提升的:http://www.joelverhagen.com/blog/2011/02/md5-hash-of-file-in-python/我直接用一个文件的显式类型路径测试了第二个例子,它返回正确的哈希值。

我也以同样的方式使用os.path.getsize方法(fSize=os.path.getsize(f))并正确地选择文件。

当我在代码中转储f字符串的内容,并将其与明确键入的路径进行比较时,我注意到字符串周围缺少'个标记:

来自'print f'的

/home/.../(500) Days of Summer[2009]/11 - Regina Spektor - Hero.mp3

并从明确键入的路径:

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()   

1 个答案:

答案 0 :(得分:0)

我不知何故得到了缩进错位,不足以导致它倒下并给我一个错误,但足以让它不起作用。答案发布在原始问题中。