我正在list
中的某个目录中获取所有文件名,并希望将此列表写入pickle
文件中。这是我正在使用的代码:
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。
答案 0 :(得分:3)
在您的情况下,很可能/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)
答案 1 :(得分:1)
我也遇到了同样的问题,但是没有一个答案对我有帮助。
目录在那里,我使用了wb
,但是一次又一次地遇到相同的问题。
我希望这对遇到相同问题的人有所帮助: 我发现问题是我有很多文件夹,文件名也太长(由于我将文件名组成一个字符串,试图在其中指示该文件的特征,这是事实) ),而当我尝试手动移动该文件时,我尝试转储到的文件夹将显示“该文件名对于目标文件夹而言太长”。
缩短文件名后,问题已解决。
答案 2 :(得分:0)
使用相对路径名(和符号链接)编写时遇到了类似的问题。该目录确实存在,但它仍然引发FileNotFoundError。
当我切换到使用绝对路径
时问题消失了abspath = pathlib.Path(filename).absolute()
with open(str(abspath), 'wb') as f:
pickle.dump(thing_to_pickle, f)
答案 3 :(得分:0)
我必须使用可控制的文件夹访问权限&#39;来自Windows 10上的Windows防御者。
其他防病毒/防火墙可能会产生同样的效果。
答案 4 :(得分:0)
确保您使用的filepath
是计算机中确实存在的。有时,我们从其他地方复制并粘贴代码,而忘记更改驱动器名称。您可能正在寻址不存在的驱动器。
答案 5 :(得分:0)
\\?\
:path = '\\\\?\\C:\\Users...
答案 6 :(得分:0)
import os
import sys
import pickle
filenamelst = ['a.txt','b.py','c.ipynb']
filenamelst_abspathname = os.path.abspath('filenamelst.pickle')
print(filenamelst_abspathname)
picklefile = open(str(filenamelst_abspathname),'wb')
pickle.dump(filenamelst, picklefile)
picklefile.close()
这有效。在您的Google Colab Notebook的侧面,泡菜文件将位于会话文件夹中。您需要从那里下载。