2012-04-10 26 views
7

私は、コードを実行しようとしています: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 

なぜ?これをどうやって解決するのですか?

答えて

22

'ab'bytesオブジェクトではなく、strという名前のPython 2では、それはunicodeです。 'ab'はバイトリテラルであることはPythonを告げる

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

を:あなたが使用する必要があります。詳細については、PEP 3112を参照してください。

+3

この回答は、質問に対する回答としてマークする必要があります。 – rbaleksandar

関連する問題