Python 3.4+structфункция
struct.iter_unpack()
упаковка и распаковка
Распаковывает буфер из одинаковых записей одного формата и отдаёт итератор кортежей, по одному на запись.
Синтаксис
for fields in struct.iter_unpack(format, buffer): ...
Длина буфера обязана делиться на calcsize(format) нацело, иначе struct.error возникает сразу при вызове, а не на последней записи: неполный хвост надо отрезать самому. Каждый элемент — кортеж, даже при одном поле в формате, так что для плоского списка значений нужен распаковывающий цикл for (x,) in ....
Примеры
import struct
buf = struct.pack('<4h', 1, 2, 3, 4)
print(list(struct.iter_unpack('<hh', buf))) # → [(1, 2), (3, 4)]
print([x for (x,) in struct.iter_unpack('<h', buf)]) # → [1, 2, 3, 4]
import struct
try:
struct.iter_unpack('<H', b'abc')
except struct.error as e:
print(e) # → iterative unpacking requires a buffer of a multiple of 2 bytes
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности