【问题标题】:Pickle: file or directory not foundPickle:找不到文件或目录
【发布时间】:2016-10-16 11:07:24
【问题描述】:

当我执行下面的代码时,我得到了错误

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)

我收到以下错误(即使我创建了 /flash/data/)

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'

【问题讨论】:

  • 尝试格式化您的问题。眼睛很难看(SO为此提供了很多解决方案)。尽管如此:通常建议使用 python 的 os.path 来处理路径的处理(本地与全局;独立于操作系统的路径附加)。您也应该使用wb 打开文件,但这是另一个问题。
  • 能否请您在代码中添加assert os.path.exists('/flash/data/'),以排除目录根本不存在的可能性。

标签: python numpy pickle


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    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)
    

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 1970-01-01
      • 2018-10-10
      • 2020-02-25
      • 2018-11-03
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多