1

bitarray0.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で停止します。

編集:

ドキュメントから:

fromfile(f、[n])

ファイルオブジェクトfからnバイトを読み取り、マシン値として解釈されるビット配列に追加します。nを省略すると、EOFに達するまで同じ数のバイトが読み取られます。

于 2012-08-14T21:21:26.993 に答える