2012-04-10 21 views
7

Ich versuche, den Code auszuführen:Struct.Error, muss ein Byteobjekt sein?

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

Aber ich erhalte immer die Fehlermeldung:

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

Warum? Wie behebe ich das?

Antwort

22

Mit Python 3 'ab' ist kein bytes Objekt, was eine str auf Python 2 genannt wurde, ist es unicode. Sie müssen verwenden:

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

die Python sagt, dass 'ab' ein Byte wörtlichen ist. Weitere Informationen finden Sie unter PEP 3112.

+3

Diese Antwort sollte als die Antwort auf die Frage markiert werden. – rbaleksandar

Verwandte Themen