Struct.Error, должен быть объект Bytes?

Я пытаюсь выполнить код:

    values = (1, 'ab', 2.7)    
    s.struct.Struct('I 2s f')
    packed = s.pack(*values)

Но я продолжаю получать ошибку:

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    struct.error: argument for 's' must be a bytes object

Почему? Как это исправить?

Ответ 1

С Python 3 'ab' не является объектом bytes, что называется str на Python 2, оно unicode. Вам необходимо использовать:

values = (1, b'ab', 2.7)

который сообщает Python, что 'ab' является байтовым литералом. Подробнее см. PEP 3112.