2016-10-16 71 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来处理路径处理(本地或全局;独立于操作系统的路径和合并追加)。你也应该用'''wb'''打开这个文件,但这是另一个问题。 – sascha

+1

你可以给你的代码添加一个'assert os.path.exists('/ flash/data /')',以排除目录不存在的可能性。 – cel

+0

感谢它的工作。 – user2560244

回答

1

这本书是一个错误。路径应该是:path ='。/ flash/data /'。一个 ”。”错过了。

+0

谢谢你非常有用。 – 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) 
相关问题