用 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)
我有一个很大的值列表,我想将其作为短整数写入文件。
我想高效地做到这一点,并且 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)