Файл HDF5 созданный с помощью h5py не может быть открыт h5py


Я создал файл HDF5, по-видимому, без каких-либо проблем, под Ubuntu 12.04 (32-битная версия), используя Anaconda в качестве дистрибутива Python и записи в ноутбуках ipython. Базовые данные - это все массивы 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)

Можете ли вы сказать мне, что это за отсутствующая подпись файла? Я что-то пропустил, когда создавал файл?

1 7

1 ответ:

Поскольку мы решили проблему в комментариях к моему вопросу, я пишу результаты здесь, чтобы отметить ее как решенную.

Главная проблема заключалась в том, что я забыл закрыть файл после его создания. Было бы два простых варианта, либо:

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')
f.close()

Или, мой любимый, потому что файл закрывается автоматически:

import numpy as np
import h5py

with h5py.File('myfile.hdf5','w') as f:
    group = f.create_group('a_group')
    group.create_dataset(name='matrix', data=np.zeros((10, 10)), chunks=True, compression='gzip')