Написание большого списка коротких целых чисел с помощью 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 ожидаемо 100 элементов для упаковки (получено 1)

Как я могу эффективно сбросить большое количество коротких целых чисел в файл?

По сути, Python-эквивалент кода C:

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

Или я вынужден записывать эти значения по одному, если я использую Python?


person Bram    schedule 17.11.2020    source источник


Ответы (1)


Просто изменив один символ:

p = struct.pack(fmt, *values)
person wim    schedule 17.11.2020