Error al abrir el archivo en H5PY (no se encontró la firma del archivo)

He estado usando el siguiente código para abrir algunos archivos HDF5, producidos en MATLAB, en python usando H5PY:

import h5py as h5 data='dataset.mat' f=h5.File(data, 'r') 

Sin embargo estoy recibiendo el siguiente error:

 OSError: Unable to open file (File signature not found) 

He comprobado que los archivos que bash abrir son archivos MAT de la versión 7.3 y están en formato HDF5. De hecho, he usado H5PY para abrir los mismos archivos antes. He confirmado que los archivos existen y que son accesibles, por lo que no estoy realmente seguro de dónde viene el error. Cualquier consejo sería muy apreciado, gracias de antemano:)

Por lo general, el mensaje ” File signature not found indica:

1. Su archivo está dañado.

… es lo que creo que es más probable. Usted dijo que ha abierto los archivos antes. Tal vez se le olvidó cerrar el identificador de archivo que puede dañar el archivo. Intente verificar el archivo con la utilidad HDF5 h5debug (disponible en la línea de comandos si ha instalado la libra hdf5 en su sistema operativo, verifique con dpkg -s libhdf5-dev en Linux).

2. El archivo no está en formato HDF5.

Esta es una causa conocida para su mensaje de error. Pero como dijo que se aseguró de que este es el caso y de que ha abierto los archivos anteriormente, le doy esto solo como referencia para otros que pueden tropezar aquí:

Desde diciembre de 2015 (a partir de la versión 7.3), los archivos Matlab utilizan el formato basado en HDF5 en sus Contenedores de Nivel 5 de MAT-file (más documentos ). Los archivos MAT de la versión anterior (v4 (Nivel 1.0), v6 y v7 a 7.2) son compatibles con y pueden leerse con la biblioteca scipy :

 import scipy.io f = scipy.io.loadmat('dataset.mat') 

De lo contrario, puede probar otros métodos y ver si el error persiste:

PyTables es una alternativa a h5py y se puede encontrar aquí .

 import tables file = tables.openFile('test.mat') 

Python MATLAB Engine es una alternativa para leer archivos MAT, si tiene instalado matlab. La documentación se encuentra aquí: MATLAB Engine API para Python .

 import matlab.engine mat = matlab.engine.start_matlab() f = mat.load("dataset.mat", nargout=1) 

Estaba enfrentando el mismo problema con mi archivo .h5. Y el problema fue que no estaba descargando el archivo .h5 correctamente.

Estaba haciendo filename.h5-> right_click-> save link as, que no estaba descargando el archivo correctamente (o puede ser que el archivo se estaba corrompiendo). En lugar de hacerlo, descargué el archivo como: seleccioné la checkbox con nombre de archivo.h5 e hice clic en descargar y después de eso mi código funcionó.

Puede ser esta ayuda la que está cometiendo el mismo error.

Por lo general, esto sucede cuando los archivos están dañados. Enfrenté este problema, volví a descargar el archivo y resolvió los problemas.