Python认为文件在二进制读取中打开时是空的

2024-04-27 23:06:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Windows上运行python3.5.1。我试图通过计算它们的哈希值在一个目录中找到重复的源代码文件。问题是Python似乎认为有些文件是空的。下面是相关的代码片段:

with open(path, 'rb') as afile:
    hasher = hashlib.md5()
    data = afile.read()
    hasher.update(data)
    print("len(data): {}, Path: {}, Hash:{}".format(len(data), path, hasher.hexdigest()))

以下是一些输出示例:

^{pr2}$

我向您保证这些文件不是空的,Python在执行期间不会抛出任何错误。有什么想法吗?在


Tags: 文件path代码目录datalen源代码windows
2条回答

我认为你应该打电话来计算散列数哈希库.md5在他们自己的档案上

import hashlib
hashlib.md5("filename").hexdigest()

如果这仍然表明文件是空的,请告诉我

如果不是这样的话,我就删除这个答案,但是你需要检查一下。把这个直接放在打开的方块前面

print("the path is {!r}".format(path))
print("path exists: ", os.path.exists(path))
print("it is a file: ", os.path.isfile(path))
print("file size is: ", os.path.getsize(path))

因为输出中的所有内容都与实际为空的文件一致。也许是吧?我的第一个想法是你可以在别处把文件归零,尽管你会很快发现这一点。在

相关问题 更多 >