2016-10-16 9 views
0

私はコードの下に実行すると、私は(/私が作成していても/フラッシュ/データ)次のエラーを取得するピクルス:ファイルまたはディレクトリが

import pickle 
import numpy as np 
from random import gauss 

path ='/flash/data/' 
a = [gauss(1.5, 2) for i in range(1000)] 
pkl_file = open(path +'data.pkl', 'w') 

%time pickle.dump(a, pkl_file) 

エラーが出るが見つかりません

IOError Traceback (most recent call last) 

<ipython-input-4-ac470dd231a6> in <module>() 

     1 import pickle 

----> 2 pkl_file = open (path + 'data.pkl','w') 

     3 get_ipython().magic(u'time pickle.dump(a,pkl_file)') 

IOError: [Errno 2] No such file or directory: '/flash/data/data.pkl' 
+0

は、あなたの質問ビットをフォーマットしてください。それは目のために難しい(そしてSOはそれのための多くの解決策を提供する)。それにもかかわらず:パスの処理を処理するためには、通常、pythonのos.pathを使用することが推奨されています(ローカルとグローバル、OSやOSのパスとコロンの付加)。おそらくファイルを '' 'wb'''で開くべきですが、それは別の問題です。 – sascha

+1

あなたのコードに '' assert os.path.exists( '/ flash/data /') 'を追加して、ディレクトリが存在しない可能性を排除してください。 – cel

+0

それは働いてくれてありがとう。 – user2560244

答えて

1

それはその本の間違いです。パスは:path = '。/ flash/data /'にする必要があります。 A "見逃しています。

+0

ありがとうthats非常に便利です。 – user2560244

1

のpython 3の補正は、次のようにする必要があり、

import os 
os.makedirs(path, exist_ok=True)  #create directory when non-existing 
path = './flash/data/'    #do not miss the '.' 
import numpy as np 
from random import gauss 
a = [gauss(1.5, 2) for i in range(1000000)] 
import pickle 
pkl_file = open(path+'.data.pkl','wb')  #use 'wb' instead of 'w' to avoid TypeError 

%time pickle.dump(a, pkl_file) 
関連する問題