1

我编写了一个程序,它使用 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()”的打印为空。但是,标题的打印很好。

4

1 回答 1

2

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

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

编辑:

从文档中:

来自文件(f,[n])

从文件对象 f 中读取 n 个字节并将它们附加到解释为机器值的位数组中。当 n 被省略时,在到达 EOF 之前读取尽可能多的字节。

于 2012-08-14T21:21:26.993 回答