python - 无法打开之前打开的H5

标签 python h5py

我有一个简单的 python 脚本,可以打开一个 H5 文件,编辑一些数据并关闭它。由于某种原因,它在我第一次运行脚本时有效,但在第二次尝试时崩溃。

我原以为错误是我没有关闭文件,但实际上我这样做了。正如您在下面看到的,我编辑了名为 backR frontR 的字段,并创建了两个新字段“Manufacturer”和“Status”,然后关闭。

f = h5py.File(filename, 'r+')
backR = f['back_R']
backR[...] = SelectedBackCoat
frontR = f['front_R']
frontR[...] = SelectedFrontCoat
f.create_dataset('manufacturer', data=SelectedManu)
f.create_dataset('status', data=SelectedState)
f.close()

第二次为同一个文件运行脚本进行处理时,我得到以下结果:

  File "h5py\h5f.pyx", line 85, in h5py.h5f.open

OSError: Unable to open file (file is already open for read-only)

最佳答案

文件仍然打开,也许您的脚本没有到达f.close()?来自 this answerthis question ,您可以尝试先强制关闭所有打开的文件。尽管您应该真正调试文件仍然打开的原因。

pytables (which h5py uses) keeps track of all open files and provides an easy method to force-close all open hdf5 files.

import tables
tables.file._open_files.close_all()

如果使用 with 语句,即使发生异常,也可以强制关闭文件:

with h5py.File(filename, 'r+') as f:
    f.write(...)

关于python - 无法打开之前打开的H5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57146913/

相关文章:

python - 将多个具有层次结构的 pd.DataFrame 保存到 hdf5

运行代码时 Python 在极少数情况下会崩溃 - 如何调试?

python - h5py 内存中文件和多重处理错误

python - 使用 python 的 h5py 包读取 hdf 文件时出错

python - 运行 gdb 时获取 python 异常

python dataframe.at 分配数据类型更改

python - 使用Python请求执行登录(Cookies未激活)

python - 精细控制 h5py 缓冲

python - 如何使用其他文件中的变量作为名称来调用函数

python - NetworkX 图形对象不可订阅