0

我在我正在编写的脚本中使用 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()   
4

1 回答 1

0

我不知何故让压痕错位,不足以导致它翻倒并给我一个错误,但足以让它不起作用。答案发布在原始问题中。

于 2012-08-22T09:37:03.653 回答