2017-02-02 6 views
0

私はこのエラーが発生し続けており、修正方法はわかりません。Python 2 - ValueError:解凍するのに十分な値ではありません(予想6、取得1)

ValueError: not enough values to unpack (expected 6, got 1) 

これは私が

with open('objs.pickle', "rb") as f: 
    money, hunger, thirst, energy, wanted, gun = pickle.load(f) 

をロードする方法であり、これは私がpickle.loadだけそれがファイルで検出した最初漬けオブジェクトをロードします

with open('objs.pickle', 'ab') as f: # Python 3: open(..., 'wb') 
    pickle.dump([money, hunger, thirst, energy, gun, wanted], f) 
+0

データを直列化するときに、ファイルを 'ab'モードで開いています。どうして?なぜPython 3上で別のモードで開くのでしょうか?このファイルに他の迷惑メールが入っている可能性があります。 – user2357112

+0

'pickle.load(f)'が返すものを確認してください。これは単一の要素でなければなりません。 – Carcigenicate

+0

その返金the money変数 – Cube

答えて

0

を保存する方法です。あなたのケースでは、それは2つ以上のキーを持つ辞書なので、x、y = pickle.load(...)は、辞書のキーを識別子xとyにアンパックしようとしているので失敗します。

with open("objs.pickle") as f: 
    first_dict = pickle.load(f) # file pointer is now at end of first object 
    second_dict = pickle.load(f) # read in second object 

あなたが1つのオブジェクトにこれらの単語を置く場合は、例えば、オフに優れていますタプルとその単一のオブジェクトをピクルスします。これは、ピクルされたオブジェクトの数が正確にわからないときは、はるかに簡単です。

my_list = ['money', 'hunger', 'thirst', 'energy', 'wanted', 'gun'] 
tuple(my_list) 

ここで、タプルmy_listをピクルする方が簡単です。

+0

待機していますが、このエラーが発生しました – Cube

+0

TypeError:int()引数は文字列、バイトのようなオブジェクトまたは数字で、 'list'ではなく、 – Cube

関連する問題