3

コードのバイトを表す整数のリストがあります。それらをバイナリファイルに高速かつ効率的に書き込むにはどうすればよいですか。

私が試してみました:

with open (output1, "wb") as compdata:
    for row in range(height):
        for data in cobs(delta_rows[row].getByte_List()):
            output_stream.append(Bits(uint=data, length=8))
    compdata.write(output_stream.tobytes())

with open (output1, "wb") as compdata:
    for row in range(height):
        bytelist = cobs(delta_rows[row].getByte_List())
        for byte in bytelist:
            compdata.write(chr(byte))

どちらも正しいと思われる結果が得られますが (まだプロセスを元に戻していません)、どちらも長い時間がかかります (敬意を表して 6 分と 4 分)。

4

1 に答える 1

9

bytearray()objectを使用して、それを出力ファイルに直接書き込みます。

with open (output1, "wb") as compdata:
    for row in range(height):
        bytes = bytearray(cobs(delta_rows[row].getByte_List()))
        compdata.write(bytes)

整数bytearray()のシーケンスは、バイト値のシーケンスとして解釈されます。

Python 3 では、同じ入力でbytes()型も使用できます。結局のところ、作成後に値を変更しているわけではありません。

于 2013-10-02T17:00:57.657 に答える