无法打开之前打开的H5
Unable to open a previously opened H5
我有一个简单的 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()
?从 to 开始,您可以先尝试强制关闭所有打开的文件。虽然你真的应该调试为什么你的文件仍然打开。
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 文件,编辑一些数据并关闭它。出于某种原因,它在我第一次 运行 脚本时有效,但在第二次尝试时崩溃了。
我原以为错误是我没有关闭文件,但实际上我关闭了。正如您在下面看到的,我编辑了名为 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()
?从
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(...)