从二进制文件读取的不同行为

Different behavior of read from binary file

我想以 128 字节为单位读取二进制文件。

我试图通过以下方式实现这一点:

 with open('someFile.bin', "rb") as file:
     for block in file.read(128): 
            print(block)

结果我每个块只得到一个字节,但我得到了 128 个块。 如果我这样做:

with open('someFile.bin', "rb") as file:
   block = file.read(128)
   print(block)

结果符合预期,block是一个128字节的二进制字符串。

为什么读取方法在这两种情况下的行为不同,我怎样才能实现以 n 字节为单位读取完整文件的目标?

file.read(n) returns 具有 n 字节的可迭代对象。像第一种情况一样使用 for 循环遍历它会导致 block 一次只保存一个字节。

在第二种情况下,您正在打印整个可迭代对象,即读取的所有 n 字节。

如果你想遍历一个文件,你基本上可以使用file.read(128)。如果再次使用,此命令会给出接下来的 128 个字节。