varBytes[0]
- это строка, в которой вам нужен объект Int16ul
из модуля construct
.
Вам нужно превратить строку в объект, который вы можете сделать, получив объект с помощьюего имя с getattr
, примененным к модулю construct
:
varNames[0]/getattr(construct, varBytes[0])
Итак, ваш пример выглядит так:
import construct
from construct import Struct
c = Struct(varNames[0]/getattr(construct, varBytes[0]),
varNames[1]/getattr(construct, varBytes[1]))
Чтобы построить список аргументов из пары списков, можноприменить Struct
к списку:
c = Struct(*[varName/getattr(construct, varByte)
for varName, varByte in zip(varNames, varBytes)])
Используется zip
, поскольку использование индексов приводит к ошибкам индекса.