从二进制文件读取的不同行为
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 个字节。
我想以 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 个字节。