如何在python中将整数列表写入二进制文件

如何在python中将整数列表写入二进制文件,python,performance,file,list,Python,Performance,File,List,我有一个表示代码字节的整数列表。如何快速高效地将它们写入二进制文件 我试过: 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(outpu

我有一个表示代码字节的整数列表。如何快速高效地将它们写入二进制文件

我试过:

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())

两者都会给我一个我认为正确的结果(我还没有反转过程),但都需要很长的时间(分别为6分钟和4分钟)。

使用a,将其直接写入输出文件:

with open (output1, "wb") as compdata:
    for row in range(height):
        bytes = bytearray(cobs(delta_rows[row].getByte_List()))
        compdata.write(bytes)
整数序列由
bytearray()
解释为字节值序列


在Python3中,您也可以使用具有相同输入的;毕竟,您在创建之后并没有对值进行变异。

这是Python 2还是Python 3?对不起,Python 2(特别是2.7.5)您看过struct.Pack了吗?这允许您将二进制数据写入字符串(和文件)。第一个-每{row,n行,something}只写一次,以获得更好的性能。但是stream.to_bytes()调用是否也会清除它?否则,你是在指数土地上。。。例如,你加上[1,2,3]。将[1]添加到输出_流中,然后将其写入。然后附加2,输出流现在是[1,2],然后编写它。然后你加上3,输出流现在是[1,2,3],你写下它。@CorleyBrigman是的,我在SE上写的时候缩进错了。这两段代码都输出完全相同的数据。我已经尝试在代码中实现这个解决方案,它的实现时间也有4分钟。这是一段很好的代码,比使用位字符串做这类事情要好得多。在某种程度上,您必须了解
COB(delta_rows[row].getByte_List())使用了多少时间。
bytesarray()
调用将结果完全转换为C代码,因此这可能是最快的转换速度。将该调用乘以2159个调用需要0.111秒=239秒或4分钟。你是对的。
with open (output1, "wb") as compdata:
    for row in range(height):
        bytes = bytearray(cobs(delta_rows[row].getByte_List()))
        compdata.write(bytes)