我在Ubuntu 12.04(32位版本)下使用Anaconda作为Python发行版,在ipython笔记本中编写,似乎毫无问题地创建了一个HDF5文件。底层数据都是numpy数组。例如:
import numpy as np
import h5py
f = h5py.File('myfile.hdf5','w')
group = f.create_group('a_group')
group.create_dataset(name='matrix', data=np.zeros((10, 10)), chunks=True, compression='gzip')
如果我尝试从一个新的iypthon笔记本打开这个文件,然而,我会收到一个错误信息:
f = h5py.File('myfile.hdf5', "r")
---------------------------------------------------------------------------
IOError Traceback (most recent call last)
<ipython-input-4-b64ac5089cd4> in <module>()
----> 1 f = h5py.File(file_name, "r")
/home/sarah/anaconda/lib/python2.7/site-packages/h5py/_hl/files.pyc in __init__(self, name, mode, driver, libver, userblock_size, **kwds)
220
221 fapl = make_fapl(driver, libver, **kwds)
--> 222 fid = make_fid(name, mode, userblock_size, fapl)
223
224 Group.__init__(self, fid)
/home/sarah/anaconda/lib/python2.7/site-packages/h5py/_hl/files.pyc in make_fid(name, mode, userblock_size, fapl, fcpl)
77
78 if mode == 'r':
---> 79 fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl)
80 elif mode == 'r+':
81 fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl)
/home/sarah/anaconda/lib/python2.7/site-packages/h5py/h5f.so in h5py.h5f.open (h5py/h5f.c:1741)()
IOError: Unable to open file (Unable to find a valid file signature)
你能告诉我那个缺失的文件签名是什么吗?在我创建这个文件时有些遗漏吗?
f.close()
关闭了它?此外,你的示例代码无法执行:变量'Mfrgroup'、'fgroup_ID'、'pos'、'Msgroup'、'sgroup_ID'和'names'未定义。 - farenorthwith h5py.File('myfile.hdf5', 'w') as f:
。这样可以避免显式关闭文件。但另一方面,它使得交互式调试文件I/O变得困难。 - farenorthf.close()
关闭文件!我通常使用with
语句,但这次按照教程操作,当然就忘了... 你想回答这个问题,还是我来?或者有其他方法标记此问题已解决吗? - Lilith-Elina