在Python中迭代二进制文件

时间:2014-10-31 20:02:02

标签: python file-io binaryfiles

我正在尝试用Python读取二进制文件。该文件由数千行组成,每行2957字节长(1字节布尔值,后跟739字节整数)

我尝试了this suggestion但这不起作用(程序永远运行)

这是我当前的设置,但是我在迭代文件时遇到了麻烦:

with open("bin-file", "rb") as f:
for line in f:
    # Here I deal with every line

问题是循环中的每一行都是不同的长度,并且行数与文件中的实际行数不对应。我假设Python发现,它认为是什么,二进制数据中的行尾标记,但那些不符合行的实际结束。

我尝试的另一个选项涉及struct.unpack()函数逐行解包,因为我确切知道每行有多少字节。

import struct
unpack_str = '=?iiiiiiii...' # The actual string contains 739 i's
n_bytes = 2957 # There are 2957 bytes per line

with open("bin-file", "rb") as f:
    line_bin = f.read(n_bytes) 
    line_str = struct.unpack(unpack_str,line_bin)

这样可行,但只返回第一行。我怎么会遍历所有的行,直到我达到EOF,知道每一行都是n_bytes长?

0 个答案:

没有答案