我编写了一个程序,它使用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()”的打印为空。 但是,标题的打印很好。
答案 0 :(得分:2)
我的问题是我认为bitarray的方法“fromfile”必须从头开始读取文件。
这可能是假的;与大多数其他文件读取例程一样,它可能从文件中的当前位置开始,并在EOF处停止。
编辑:
来自文档:
fromfile(f,[n])
从文件对象f中读取n个字节,并将它们附加到解释为机器值的bitarray。省略n时,读取多少字节直到达到EOF。