使用Python中的bitarray文件读取包含头文件的二进制文件

时间:2012-08-14 21:17:57

标签: python header bitarray

我编写了一个程序,它使用bitarray 0.8.0将位写入二进制文件。我想在这个二进制文件中添加一个标题来描述文件中的内容。

我的问题是我认为bitarray的方法“fromfile”必须从头开始读取文件。我可以做一个解决方法,以便读取程序获取标题,然后重写一个只包含二进制部分(bitarray tofile)的临时文件,但它听起来不太有效。

有没有办法正确地做到这一点?

我的文件可能类似于以下内容,其中明文是标题,二进制数据是位数信息:

... {(0,0):'0'} {(0,0):'0'} {(0,0):'0'} ...

编辑:

我在阅读回复后尝试了以下内容:

bits = ""
b = bitarray()
with open(Filename, 'rb') as file:
    #Get header
    byte = file.read(1)
    while byte != "":
        # read header
        byte = file.read(1)
    b.fromfile(file)
    print b.to01()
    print "len(b.to01())", len(b.to01())

长度为0,“to01()”的打印为空。 但是,标题的打印很好。

1 个答案:

答案 0 :(得分:2)

  

我的问题是我认为bitarray的方法“fromfile”必须从头开始读取文件。

这可能是假的;与大多数其他文件读取例程一样,它可能从文件中的当前位置开始,并在EOF处停止。

编辑:

来自文档:

  

fromfile(f,[n])

     
    

从文件对象f中读取n个字节,并将它们附加到解释为机器值的bitarray。省略n时,读取多少字节直到达到EOF。