尝试打开h5py文件时,返回错误号17,错误信息为“文件已存在”。

4

导入numpy和h5py库

使用h5py库创建一个名为"testfile.hdf5"的文件,并以"w-"模式打开

创建一个形状为(5,2)的全1数组arr

将数组arr存储到文件f中,键值为"my dataset"

从文件f中获取键值为"my dataset"的数据集dset

这段代码第一次运行时没有问题,但第二次运行时会出现以下错误:

%运行"C:\Users\James\Google Drive\Python Scripts\Python and HDF5\Chapter3.py"
运行时出错,具体如下:
在代码的第8行中将一个二维数组赋值给h5py文件对象中的数据集时出错。错误信息显示为“Name already exists”,即该名称已存在。
%运行"C:\Users\James\Google Drive\Python Scripts\Python and HDF5\Chapter3.py"
运行时出错,具体如下:
在代码的第6行中以只写模式打开名为testfile.hdf5的文件时出错。错误信息显示为“Unable to create file (Unable to open file: name = 'testfile.hdf5', errno = 17, error message = 'file exists', flags =15, o_flags = 502)”,即无法创建文件(文件已存在)。

这段代码和错误在Canopy // Python 3.5中运行。我还在Spyder中运行它,得到了相同的结果。我也尝试使用

with h5py.File("testfile.hdf5", "a") as f:

但没有成功。

2个回答

3
当我在keras(v2.2.2)中使用HDF5Matrix类时,遇到了完全相同的错误消息。然而,当我有多个训练进程需要访问同一磁盘上的HDF5数据时,我无法找到一个成熟的解决方案来完全避免这种错误。只有一个进程能够成功访问这个HDF5数据,而其他所有进程都会报告相同的错误,即使我将读取模式从默认的r+修改为r。我放弃了,并使用了可行的解决方案,即为每个训练进程保留多个HDF5数据副本和一个副本。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接