Di solito il messaggio indica un File signature not found
:
1. Il file è danneggiato.
... è quello che penso sia più probabile. Hai detto che hai già aperto i file. Forse hai dimenticato di chiudere il tuo file-handle che può corrompere il file. Prova a controllare il file con l'utilità HDF5 h5debug
(disponibile sulla riga di comando se hai installato la libreria hdf5 sul tuo sistema operativo, controlla con dpkg -s libhdf5-dev
su Linux).
2. Il file non è nel formato HDF5.
Questa è una causa nota per il messaggio di errore. Ma dal momento che hai detto di esserti assicurato, che questo è il caso e che hai già aperto i file, ti sto dando questo solo per riferimento per altri che potrebbero inciampare qui:
Da dicembre 2015 (dalla versione 7.3) , I file Matlab utilizzano il formato basato su HDF5 nel loro MAT-File Level 5 Containers (altro doc). Versione precedente MAT-files (v4 (livello 1.0), V6 e V7 a 7,2) sono supportati da e possono essere letti con la scipy
libreria:
import scipy.io
f = scipy.io.loadmat('dataset.mat')
Altrimenti si può provare altri metodi e vedere se il errore persiste:
PyTables è un'alternativa a h5py e si trova here.
import tables
file = tables.openFile('test.mat')
Python MATLAB Engine è un'alternativa per leggere i file MAT, se avete installato MATLAB. La documentazione è disponibile qui: MATLAB Engine API for Python.
import matlab.engine
mat = matlab.engine.start_matlab()
f = mat.load("dataset.mat", nargout=1)