如何从二进制文件中读取除最后 X 字节以外的所有字节?

How do I read all but the last X bytes from a binary file?

我想从二进制文件中读取所有数据,不包括最后 4 个字节。我们如何在 Python 中完成?

像往常一样阅读它,然后切片结果:

with open(path_to_file, 'rb') as f:
    f.read()[:-4]

这个问题很老,但是对于在 Google 上找到这个问题的其他人,请注意:执行 f.read()[:-4] 会将整个文件读入内存,然后将其切片。

如果您只需要文件的前 N ​​个字节,只需将大小作为参数传递给 read() 函数:

with open(path_to_file, 'rb') as f:
    first_four = f.read(4)

这避免了在您可以懒惰地读取前 N 个字节并停止时读取整个潜在的大文件。

如果您需要文件的最后 N 个字节,可以使用 os.lseek() 查找文件的最后一个块。这更复杂,留作 reader 的练习。 :-)