无法打开以前打开的H5

时间:2019-07-22 13:15:14

标签: 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)

1 个答案:

答案 0 :(得分:1)

文件仍处于打开状态,也许您的脚本未到达f.close()?从this answerthis question,您可以尝试先强制关闭所有打开的文件。尽管您应该真正调试为什么仍然打开文件。

  

pytables(h5py使用)跟踪所有打开的文件并提供   一种简单的方法来强制关闭所有打开的hdf5文件。

import tables
tables.file._open_files.close_all()

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

with h5py.File(filename, 'r+') as f:
    f.write(...)
相关问题