如何使用python循环二进制块并在文件末尾停止?

如何使用python循环二进制块并在文件末尾停止?,python,binaryfiles,eof,sequential,Python,Binaryfiles,Eof,Sequential,我有一个二进制文件,需要按顺序读取,因为它是在可变大小的块中构造的,这些块在开始时会自我描述 因此,我想循环一组: +获取下一个块结构和限制 +解析它 +继续走到下一个街区 在某个时候,我需要知道,现在文件已经结束了 既然python在while循环中没有EOF检查,我该怎么做呢 对类似问题的在线回答只是说,当file.read()返回的字节数不超过您要求的字节数时,您可以停止解析 很好,但是在解析一个块之后,我需要读取下一个字节来完成这项工作,这很烦人,因为它可能是下一个结构定义的一部分 下面

我有一个二进制文件,需要按顺序读取,因为它是在可变大小的块中构造的,这些块在开始时会自我描述

因此,我想循环一组: +获取下一个块结构和限制 +解析它 +继续走到下一个街区

在某个时候,我需要知道,现在文件已经结束了

既然python在while循环中没有EOF检查,我该怎么做呢

对类似问题的在线回答只是说,当file.read()返回的字节数不超过您要求的字节数时,您可以停止解析

很好,但是在解析一个块之后,我需要读取下一个字节来完成这项工作,这很烦人,因为它可能是下一个结构定义的一部分

下面是我为解决这个问题而设计的两个while循环。

1)利用python中的file.read(num\u of_bytes),它可以告诉您没有更多的字节可读取,一个解决方案可能是

while (dat.read(1)):
    dat.seek(-1,1)
    [your business here]
通过反向搜索,可以从上一块中留下的位置继续

2) 如果您知道您的文件在读取时没有更改,您可以利用其长度,只需使用

flength = os.stat(your_file).st_size # your file size in bytes
while (dat.tell() < flength):
        [your business here]
flength=os.stat(您的_文件).st_size#您的文件大小(字节)
while(dat.tell()
利用.tell()方法,该方法为您提供文件中的字节。

1)利用python中的.read(num_of_bytes)文件,它可以告诉您没有更多的字节可读取。一个解决方案可以是

while (dat.read(1)):
    dat.seek(-1,1)
    [your business here]
通过反向搜索,可以从上一块中留下的位置继续

2) 如果您知道您的文件在读取时没有更改,您可以利用其长度,只需使用

flength = os.stat(your_file).st_size # your file size in bytes
while (dat.tell() < flength):
        [your business here]
flength=os.stat(您的_文件).st_size#您的文件大小(字节)
while(dat.tell()
利用.tell()方法,该方法提供文件中的字节