2017-10-18 4 views
1

VMにシンプル・ピクル・ロードを実行できません。 これは簡単なデモコードです。pickle.loadを実行できません

[email protected]:~# python 
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import pickle 
>>> x = {1:2 } 
>>> f = open ('demo', 'wb+') 
>>> f 
<open file 'demo', mode 'wb+' at 0x7fae71b44660> 
>>> pickle.dump(x, f) 
>>> 
>>> 
>>> f.close() 
>>> 
>>> 
>>> p = open('demo', 'wb+') 
>>> p 
<open file 'demo', mode 'wb+' at 0x7fae71b446f0> 
>>> a = pickle.load (p) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/pickle.py", line 1384, in load 
    return Unpickler(file).load() 
    File "/usr/lib/python2.7/pickle.py", line 864, in load 
    dispatch[key](self) 
    File "/usr/lib/python2.7/pickle.py", line 886, in load_eof 
    raise EOFError 
EOFError 

大規模なデータに対しては、以前は何回も酸洗いをしていましたが、この問題は発生しませんでした。

私は'r+','w+'でも試しました。

私はThis releventを発見したが、溶液は、私の場合は不可能であるRAMを増やす必要、

もピクルスエラーに対処するいくつかの質問がありますが、それらのほとんどは、ファイルオープンモードで問題を抱えていました。

+0

「r」と同じ動作をする場合、** show us **をテキストにアサートするだけではありません。 'w'の失敗はまったく驚くべきことではありません。期待できることです。 –

答えて

2

ロードしようとしているファイルハンドル(p)が、モードwb+で開かれました。これは、ファイルを開いたときに長さゼロに切り捨てるため、には何もないので、EOFErrorには何もありません。代わりにrb+を使用する予定ですか?

+0

私はそれがファイルを切り捨てることを知らなかった。 Iはpickle .dumpとpickle.loadのモードを 'rb +'に置き換えて動作します。ありがとう – Dave

関連する問題