Ho creato un file HDF5 apparentemente senza problemi, in Ubuntu 12.04 (versione a 32 bit), utilizzando Anaconda come distribuzione e scrittura Python nei notebook ipython. I dati sottostanti sono tutti gli array numpy. Ad esempio,Il file HDF5 creato con h5py non può essere aperto da h5py
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')
Se provo ad aprire il file da un nuovo notebook iypthon, però, ricevo un messaggio di errore:
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)
mi puoi dire quello che la firma file mancante è? Mi sono perso qualcosa quando ho creato il file?
Forse si '' f.close tuo file *() * scrivibile prima di provare per aprirlo di nuovo? Inoltre, il tuo codice di esempio non è eseguibile: le variabili 'Mfrgroup',' fgroup_ID', 'pos',' Msgroup' 'sgroup_ID' e' nomi' non sono definiti. – farenorth
Si consiglia di scrivere o da file (usando qualsiasi costruttore di file, non solo h5py) per usare l'istruzione ['with'] (http://stackoverflow.com/questions/3012488/what-is-the-python -con-dichiarazione-progettato per). Per esempio 'con h5py.File ('myfile.hdf5', 'w') come f:'. Ciò lo rende cosicché tu non debba chiudere esplicitamente il file. D'altra parte, rende difficile eseguire il debug del file I/O in modo interattivo. – farenorth
Inoltre, è necessario creare tutte queste variabili nel set di dati per generare questo errore? Hai lo stesso errore se crei solo una di quelle variabili? – farenorth