使用位数组';读取带有头的二进制文件;从Python中的文件中删除
我编写了一个程序,使用bitarray 0.8.0将位写入二进制文件。我想给这个二进制文件添加一个头来描述文件中的内容 我的问题是,我认为bitarray的“fromfile”方法必须从头开始读取文件。我可以做一个变通办法,让读取程序获得头文件,然后重写一个只包含二进制部分(bitarray tofile)的临时文件,但这听起来不是一个非常有效的想法 有什么方法可以正确地做到这一点吗 我的文件可能类似于以下内容,其中明文是头,二进制数据是位数组信息: …{(0,0):'0'}{(0,0):'0'}{(0,0):'0'}���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������... 编辑: 在阅读回复后,我尝试了以下方法:使用位数组';读取带有头的二进制文件;从Python中的文件中删除,python,header,bitarray,Python,Header,Bitarray,我编写了一个程序,使用bitarray 0.8.0将位写入二进制文件。我想给这个二进制文件添加一个头来描述文件中的内容 我的问题是,我认为bitarray的“fromfile”方法必须从头开始读取文件。我可以做一个变通办法,让读取程序获得头文件,然后重写一个只包含二进制部分(bitarray tofile)的临时文件,但这听起来不是一个非常有效的想法 有什么方法可以正确地做到这一点吗 我的文件可能类似于以下内容,其中明文是头,二进制数据是位数组信息: …{(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()”的打印为空。
但是,页眉的打印效果良好
我的问题是,我认为bitarray的“fromfile”方法必须从头开始读取文件
这可能是错误的;与大多数其他文件读取例程一样,它可能从文件中的当前位置开始,并在EOF处停止
编辑:
从文件中:
fromfile(f[n])
从文件对象f中读取n个字节,并将它们附加到解释为机器值的位数组中。当省略n时,在达到EOF之前读取相同数量的字节
>fromfile(f,[n])从文件对象f读取n个字节,并将它们附加到解释为机器值的位数组中。当省略n时,在达到EOF之前读取的字节数相同。我同意你的看法。我只是想引用文档中的一句话来巩固你的观点。@mgilson:很公平。我将编辑以包含适当的摘录。我只是做了一个快速测试,它似乎不起作用。在读取标题(不关闭缓冲区)后,我尝试了b.fromfile(file)并打印b.to01()。打印的是空的。我刚刚编辑了我的帖子,这样你就可以了解我测试的代码了。奇怪的是,在这里工作很好。奇怪的是,
bitarray.fromfile()
不是类方法。