HDF5 fichier créé avec h5py ne peut pas être ouvert par h5py

J'ai créé un HDF5 fichier apparemment sans problème sous Ubuntu 12.04 (version 32 bits), en utilisant comme Anaconda Python de la distribution et de l'écriture dans ipython notebook. Les données sous-jacentes sont tous les tableaux numpy. Par exemple,

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')

Si je tente d'ouvrir ce fichier à partir d'un nouveau iypthon ordinateur portable, cependant, je reçois un message d'erreur:

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)

Pouvez-vous me dire ce qu'il manque des fichier de signature est? Ai-je raté quelque chose quand j'ai créé le fichier?

Avez-vous f.close() votre écriture fichier avant d'essayer de l'ouvrir à nouveau? Aussi, votre exemple de code n'est pas exécutable: les variables Mfrgroup, fgroup_ID, pos, Msgroup sgroup_ID et names ne sont pas définis.
Il est souvent recommandé lors de l'écriture ou de fichiers (à l'aide de n'importe quel fichier constructeur, et pas seulement h5py) pour utiliser le with de l'instruction. Par exemple with h5py.File('myfile.hdf5', 'w') as f:. Ce qu'il fait en sorte que vous n'avez pas explicitement fermez le fichier. D'autre part, il est difficile de déboguer le fichier I/O interactive.
Aussi, avez-vous vraiment besoin de créer l'ensemble de ces variables dans votre jeu de données pour générer cette erreur? Obtenez-vous le même message d'erreur si vous créez une seule de ces variables?
Vous aviez raison, je n'ai oublier de f.close() le fichier! J'ai l'habitude d'utiliser le with déclaration, mais cette fois suivi un tutoriel et bien sûr oublié que... voulez-vous écrire une réponse, ou devrais-je? Ou est-il un autre moyen de marquer cette question comme résolue?
Super! Je ne sais pas beaucoup au sujet de iPython ordinateurs portables, mais basée sur cette erreur, je suppose qu'ils utilisent le même interprète (noyau/session). Cette page a une discussion de séparer le noyau de l'ordinateur portable, ce qui est probablement à propos de votre problème; c'est à dire peut-être que vous êtes à l'aide de l'api cahiers avant ce changement? Ces types de choses qui ont pu être documentés dans la réponse que vous fournissez.

OriginalL'auteur Lilith-Elina | 2014-10-28