1

我有一个很大的值列表,我想将它们作为短整数写入文件。

我想在 Python3 中有效地做到这一点。

一次一个值,可以使用struct模块:

struct.pack( "h", val )

可以在格式条目前面加上一个计数,如下所示:

struct.pack( "4h", val0,val1,val2,val3 )

但是当我尝试动态构建格式并一次性编写时,我无法输入列表。

例如:

values = [ x for x in range(100) ]
fmt = "%dh" % ( len(values), )
p = struct.pack( fmt, values )

会报错:struct.error: pack expected 100 items for packing (got 1)

如何有效地将大量短整数转储到文件中?

基本上,C 代码的 Python 等价物:

short values[100];
fwrite( values, sizeof(values), 1, f);

或者如果我使用 Python,我是否被迫一次写一个这些值?

4

1 回答 1

2

只需更改一个字符:

p = struct.pack(fmt, *values)
于 2020-11-17T02:57:45.207 回答