У меня есть большой список значений, которые я хочу записать в файл в виде коротких целых чисел.
Я хочу сделать это эффективно и в 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 ожидаемо 100 элементов для упаковки (получено 1)
Как я могу эффективно сбросить большое количество коротких целых чисел в файл?
По сути, Python-эквивалент кода C:
short values[100];
fwrite( values, sizeof(values), 1, f);
Или я вынужден записывать эти значения по одному, если я использую Python?