OSError:无法打开文件(无法打开文件)

Posted

技术标签:

【中文标题】OSError:无法打开文件(无法打开文件)【英文标题】:OSError: Unable to open file (unable to open file) 【发布时间】:2019-01-06 16:16:36 【问题描述】:

我正在尝试为我的作业加载一个名为“tr_model.h5”的预训练模型,但出现以下错误:

Traceback (most recent call last):
 File "Trigger_Project.py", line 84, in <module>
model = load_model(filename)
 File "Trigger_Project.py", line 84, in <module>
model = load_model(filename)
 File "/home/neeraj/anaconda3/lib/python3.6/site-packages/h5py/_hl/files.py", line 99, in make_fid
fid = h5f.open(name, flags, fapl=fapl)
File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper

文件“h5py/_objects.pyx”,第 55 行,在 h5py._objects.with_phil.wrapper 中

File "h5py/h5f.pyx", line 78, in h5py.h5f.open
OSError: Unable to open file (unable to open file: name = 'tr_model.h5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)

我已确定该文件存在。我不知道为什么它显示操作系统错误。我正在使用 linux 18.04,并且所有必需的库都已升级。任何帮助深表感谢。

【问题讨论】:

会不会是相对路径的问题? 不,在同一目录下 是否有无法通过终端打开的问题? 你能添加一个print(os.getcwd()) 并检查它是否是你假设的正确目录吗? 是的,我确实检查过了,它报告的目录与我假设的目录相同。 【参考方案1】:

我遇到了与我在问题中发布的相同的问题:

h5py.File(path) doesn't recognize folder path

我最初的推理是 h5py.File(path) 不处理标准子文件夹路径作为它的参数,例如load_model("neunet.h5") 没有问题,但load_model("subfolder/neunet.h5") 会给出同样的错误。

简而言之,我的解决方案是简单地将任何 .h5 文件放入我的 jupyter notebook 的工作主文件夹中,这是您创建 .ipynb 文件的地方。您可以在 jupyter notebook 中使用 print(os.getcwd()) 来查看您当前的工作目录在哪里。

【讨论】:

【参考方案2】:

如果您正在使用 colab 和 google drive,请使用以下方式将驱动器安装到 colab,

# Load the Drive helper and mount
from google.colab import drive

# This will prompt for authorization.
drive.mount('/content/drive')

【讨论】:

【参考方案3】:

我通过指定绝对路径解决了这个问题。获取工作文件夹的绝对路径,然后将路径附加到工作目录中的文件。就我而言,该文件位于名为 datasets 的目录中,因此我尝试了以下代码

file_name = os.path.dirname(__file__) +'\\datasets\\test_catvnoncat.h5'
test_dataset = h5py.File(file_name, "r")

【讨论】:

【参考方案4】:

我在使用 docker 镜像时遇到了这个错误。由于自定义 docker 的路径与根路径不同,我得到了同样的错误。

OSError: 无法打开文件(无法打开文件:name = '',errno = 2,错误消息 = 'No such file or directory',flags = 0,o_flags = 0)

基本上路径不匹配会引发此错误

    检查相对、绝对路径 检查您的程序期望的路径

【讨论】:

【参考方案5】:
    如果你运行 a.py 得到错误,但是你在 b.py 中加载了 model.h5 请将 model.h5 cp 到与 a.py 同级目录 将 b.py 的 load('xx/model.h5') 编辑为 load('model.h5')

它对我有用。

【讨论】:

【参考方案6】:

在通过设置“%cd /gdrive”安装驱动器后以及编写“model.save('/gdrive/mnist.h5')”时,我在 colab 中遇到了同样的问题。然后我意识到可以创建文件并将其保存在“/gdrive/My Drive/”中,而不仅仅是“/gdrive”。因此,检查您是否可以在指定的路径中创建文件很重要。

所以,model.save('/gdrive/My Drive/mnist.h5') 对我有用。

【讨论】:

【参考方案7】:

我在使用设置训练检查点的路径时遇到了同样的问题 tensorflow.keras.callbacks.ModelCheckpoint 我已经设置了路径:

path = os.path.join(subdir,filename)

使用 f 字符串 解决了这个问题:

path = f'subdir/filename'

所以我还要检查你是如何导入load_model的, 尝试tensorflow.keras.models 而不是仅keras.models

【讨论】:

【参考方案8】:

我的loss 始终等于inf,因此模型文件从未在回调时写入磁盘,因为它只是为loss 的最佳情况而编写的。

当我从数据集中消除所有 NaN 值时,一切顺利,模型出现在文件系统上。

在回调中启用详细程度有助于诊断此问题。

有关详细信息,请参阅有关回调的官方 Keras 文档。

【讨论】:

以上是关于OSError:无法打开文件(无法打开文件)的主要内容,如果未能解决你的问题,请参考以下文章

OSError:libmkl_intel_lp64.so.1:无法打开共享对象文件:没有这样的文件或目录

Python3 open() 函数-用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

从终端运行 Xcode 无法打开 javascript 脚本(错误:仪器无法打开“TextWrangler 文本文档”格式的文件。”)

OSError: [Errno 19] 无法打开 uinput 设备:没有这样的设备

FileSystemException:无法打开文件,路径 = '/storage/0/emulated/myfolder/myfile.txt'(操作系统错误:没有这样的文件或目录,errno =

OSError : [Errno 24] 打开的文件太多