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)

整数序列被 a 解释bytearray()为字节值序列。

在 Python 3 中,您也可以使用具有相同输入的bytes()类型;毕竟,您不会在创建后改变值。

于 2013-10-02T17:00:57.657 回答