fileNotFoundError在写入腌制文件

问题描述 投票:0回答:6
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。)
    

在您的情况下很可能不存在目录

我尝试了此代码并获得了同样的错误:

python pickle
6个回答
21
投票

输出:

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'

ref:

Https://stackoverflow.com/a/12517490/3027854

    

我也遇到了同样的问题,但没有任何答案对我有帮助。 
目录在那里,我使用了
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)

,但一次又一次地存在同样的问题。 我希望这对一些有同样问题的人有帮助: 我发现问题在于我有很多文件夹,也有文件的名称太长(由于我将文件名作为字符串编写,我试图指示该文件的特征)当我试图手动移动该文件时,我试图倾倒的文件夹将提出“目标文件夹的文件名太长”。 缩短文件名后,解决了问题。


7
投票
当我切换到使用绝对路径

时,问题消失了

wb

I必须从Windows 10上的Windows Defender上使用“控制文件夹访问”。 其他防病毒/防火墙可能具有相同的效果。

Https://support.microsoft.com/en-us/help/4046851/windows-10-controlled-folder-folder-access-windows-windows-defender-nefender-security-center

4
投票

确保文件路径已经存在。
如果路径很长,请在路径前添加魔术前缀
abspath = pathlib.Path(filename).absolute() with open(str(abspath), 'wb') as f: pickle.dump(thing_to_pickle, f)

2
投票
\\?\

path = '\\\\?\\C:\\Users...

这工作。在Google Colab笔记本的一侧,腌制文件将在“会话文件夹”中。您需要从那里下载。

0
投票
    我不知道这是否会对其他任何人有所帮助,但是对我来说,我试图保存的文件名是一个保留的关键字,它崩溃了。将另一个角色添加到名称中,就是允许其正确泡菜所需的一切。这是您可以用来提前标记此类错误并避免玩whack-a-mole的功能。
  • Https://docs.python.org/3/library/pathlib.html#pathlib.purepath.is_resverd
  •     
    您需要将绝对路径放在`'用户/
    /data/sosings/sosings
  • 之类的绝对路径

0
投票
确保您使用的是计算机中实际上存在的东西。有时,我们从其他地方复制和粘贴代码,而忘记更改驱动器名称。您可能正在解决非现有驱动器。
	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.