все Python 3structпонятие
struct.Struct
формат
Скомпилированный формат struct: один раз разбирает строку формата и даёт методы pack, unpack, iter_unpack и размер size.
Синтаксис
s = struct.Struct(format) # s.pack(...), s.unpack(buf), s.size, s.format
Выигрыш в скорости меньше, чем кажется: модульные функции struct кэшируют недавние форматы сами. Главная польза — формат записи объявлен один раз и назван, а size заменяет повторный calcsize. Без префикса порядка ('<', '>', '!') размер и раскладка нативные, с выравниванием, и файл, записанный на одной машине, может не прочитаться на другой.
Примеры
import struct
rec = struct.Struct('<hI') # short + unsigned int, little-endian
print(rec.size) # → 6
data = rec.pack(-1, 7)
print(rec.unpack(data)) # → (-1, 7)
import struct
point = struct.Struct('<ff')
buf = point.pack(1.5, 2.0) + point.pack(3.0, 4.5)
print(list(point.iter_unpack(buf))) # → [(1.5, 2.0), (3.0, 4.5)]
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности