Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用位数组';读取带有头的二进制文件;从Python中的文件中删除_Python_Header_Bitarray - Fatal编程技术网

使用位数组';读取带有头的二进制文件;从Python中的文件中删除

使用位数组';读取带有头的二进制文件;从Python中的文件中删除,python,header,bitarray,Python,Header,Bitarray,我编写了一个程序,使用bitarray 0.8.0将位写入二进制文件。我想给这个二进制文件添加一个头来描述文件中的内容 我的问题是,我认为bitarray的“fromfile”方法必须从头开始读取文件。我可以做一个变通办法,让读取程序获得头文件,然后重写一个只包含二进制部分(bitarray tofile)的临时文件,但这听起来不是一个非常有效的想法 有什么方法可以正确地做到这一点吗 我的文件可能类似于以下内容,其中明文是头,二进制数据是位数组信息: …{(0,0):'0'}{(0,0):'0'

我编写了一个程序,使用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()”的打印为空。 但是,页眉的打印效果良好

我的问题是,我认为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()
不是类方法。