用 python 写一个大的短整数列表

Writing a large list of short integers with python

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

我想高效地做到这一点,并且 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)

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

基本上,Python 等同于 C 代码:

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

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

只改变一个字符:

p = struct.pack(fmt, *values)