Python认为以二进制读取方式打开文件时文件为空

用户名

我在Windows上运行Python 3.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()))

这是一些示例输出:

len(data): 0, Path: h:\t\TCPServerSocket.h, Hash:d41d8cd98f00b204e9800998ecf8427e
len(data): 0, Path: h:\t\TCPSocket.cpp, Hash:d41d8cd98f00b204e9800998ecf8427e
len(data): 0, Path: h:\t\TCPSocket.h, Hash:d41d8cd98f00b204e9800998ecf8427e
len(data): 5073, Path: h:\t\ConfigFile.cpp, Hash:6188d6a0e0bc02edf27ce232689beff6

我向您保证这些文件不是空的,并且Python在执行过程中不会引发任何错误。有任何想法吗?

肯尼·奥斯特罗姆(Kenny Ostrom)

如果不是这种情况,我将删除此答案,但这是您需要检查的内容。将其直接放在打开的块之前

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

因为您输出中的所有内容都与该文件实际为空一致。也许是吗?我的第一个想法是,您可能会将该文件归零,尽管您很快就会发现。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python认为以二进制读取方式打开文件时文件为空

来自分类Dev

Python 3.6:读取非空二进制文件被 Python 解释为空

来自分类Dev

读取文件为二进制/十六进制

来自分类Dev

打开并读取二进制文件(javascript)

来自分类Dev

关闭并打开二进制文件时读取

来自分类Dev

将图像读取为二进制文件

来自分类Dev

hexdump并将二进制文件读取为文本

来自分类Dev

读取\ xHH从文件中转义为Python中的原始二进制文件

来自分类Dev

在python中打开Apache Thrift二进制文件

来自分类Dev

是什么使grep认为文件是二进制文件?

来自分类Dev

从github下载的文件被认为是二进制文件?

来自分类Dev

大块读取二进制文件

来自分类Dev

从二进制文件读取

来自分类Dev

从二进制文件读取char *

来自分类Dev

从MongoDB读取二进制文件

来自分类Dev

从二进制文件读取

来自分类Dev

读取二进制文件c

来自分类Dev

读取大型二进制文件

来自分类Dev

读取/写入二进制文件

来自分类Dev

分批读取二进制文件

来自分类Dev

从二进制文件中读取

来自分类Dev

读取整数的二进制文件

来自分类Dev

在python中读取二进制文件时的偏移

来自分类Dev

Python读取Fortran二进制文件

来自分类Dev

使用Python 3.5从二进制文件读取

来自分类Dev

在 Python 上读取二进制文件

来自分类Dev

读取用 Python 编写的 Fortran 二进制文件

来自分类Dev

R和python读取二进制文件的区别

来自分类Dev

使用std :: ifstream读取二进制文件后,std :: vector <unsigned char>保持为空