2017-03-05 102 views
0

我在list的某個目錄中取得所有文件名,並且希望將此列表寫入pickle文件。下面是我使用的代碼:寫入Pickle文件時發生FileNotFoundError

import _pickle as pickle 
with open(filepath+'filenames.pkl', 'wb') as f: 
    pickle.dump(filenames, f) 

這給了我下面的錯誤:

--------------------------------------------------------------------------- 
FileNotFoundError       Traceback (most recent call last) 
<ipython-input-32-c59e6889d2fe> in <module>() 
     1 import _pickle as pickle 
----> 2 with open(dpath+'filenames.pkl', 'wb') as f: 
     3  pickle.dump(filenames, f) 

FileNotFoundError: [Errno 2] No such file or directory: '/data/train/filenames.pkl' 

我應該創建這個文件,所以預計已經這個文件?

(我正在使用Python 3.6) 任何幫助將不勝感激。

TIA。

+2

是'/ data/train /'禮物? –

+0

是的,它存在 – Patthebug

+0

在你的根目錄('/')有一個'train'文件夾裏有'data'文件夾嗎?請確保您所指的'data'目錄不在您的項目目錄中,而是位於'root'目錄下。 –

回答

0

在你的情況最有可能/data/train/目錄不存在

我想這個代碼,並得到了同樣的錯誤:

import pickle as pickle 
filenames='sadasdas' 
with open('/tmp/not_exist/filenames.pkl', 'wb') as f: 
    pickle.dump(filenames, f) 

輸出:

--------------------------------------------------------------------------- 
FileNotFoundError       Traceback (most recent call last) 
<ipython-input-7-6a22c2148796> in <module>() 
     1 import pickle as pickle 
     2 filenames='sadasdas' 
----> 3 with open('/tmp/not_exist/filenames.pkl', 'wb') as f: 
     4  pickle.dump(filenames, f) 

FileNotFoundError: [Errno 2] No such file or directory: '/tmp/not_exist/filenames.pkl' 

您可以通過處理這個問題確保目錄在寫入文件之前已存在:使用相同的程序化方法

import os 
filename = "/tmp/not_exist/filenames.pkl" 
os.makedirs(os.path.dirname(filename), exist_ok=True) 
data = 'sadasdas' 
with open('/tmp/not_exist/filenames.pkl', 'wb') as f: 
    pickle.dump(data, f) 

裁判:https://stackoverflow.com/a/12517490/3027854

0

在使用相對路徑(和一個符號連接)寫我有一個類似的問題。該目錄明確存在,但仍然引發FileNotFoundError。

當我切換到使用絕對路徑的問題消失了

abspath = pathlib.Path(filename).absolute() 
with open(str(abspath), 'wb') as f: 
    pickle.dump(thing_to_pickle, f) 
相關問題