如何在Python中有效地将二进制数据打包到文件中?

时间:2012-06-29 20:57:33

标签: python file-io binary

我想将二进制数据写入Python中的文件,而不是先通过临时缓冲区发送它。如何直接在文件中使用struct模块?

1 个答案:

答案 0 :(得分:3)

以下是我能够在Python 3下将二进制数据直接打包到文件中的方法。唯一的缺点是在写入数据之前需要猜测文件的最大大小。 (如果猜测太大,可以在最后调用truncate。)

这里发生了两件事。该文件正在进行内存映射,struct用于将数据打包到该内存映射的memoryview中。通过使用memoryview,可以使用Python缓冲区接口直接写入文件。 struct的{​​{1}}函数可以写入任何支持缓冲区接口的函数。也可以通过在套接字上使用pack_into将二进制数据直接写入套接字来使用此技术。

memoryview

另外,请注意,减少对import struct import mmap with open('test.bin', 'wb') as f: f.truncate(100) with open('test.bin', 'r+b') as f: m = mmap.mmap(f.fileno(), 0) mv = memoryview(m) for ind in range(25): struct.pack_into('>l', mv, ind * 4, ind) 的调用可能会更好,而在此循环调用它只是为了说明目的。