Python Glossary English

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Сообщить о неточности