通常是消息File signature not found
表示:
1.您的文件已损坏。
……我认为最有可能的是。你说你以前打开过这些文件。也许您忘记关闭文件句柄,这可能会损坏文件。
尝试使用 HDF5 实用程序检查文件h5debug
(如果您已在操作系统上安装了 hdf5 库,则可在命令行上使用,请检查dpkg -s libhdf5-dev
在 Linux 上)。
2. 文件不是HDF5格式。
这是导致错误消息的已知原因。但既然你说你确定是这种情况,并且你之前已经打开过这些文件,我给出的只是供其他可能在这里遇到问题的人参考:
自 2015 年 12 月(自版本 7.3 起),Matlab 文件在其文件中使用基于 HDF5 的格式MAT 文件级别 5 容器 https://www.loc.gov/preservation/digital/formats/fdd/fdd000440.shtml (more doc https://www.mathworks.com/help/pdf_doc/matlab/matfile_format.pdf)。早期版本的 MAT 文件(v4(级别 1.0)、v6 和 v7 至 7.2)受scipy
图书馆:
import scipy.io
f = scipy.io.loadmat('dataset.mat')
否则,您可以尝试其他方法,看看错误是否仍然存在:
PyTables是 h5py 的替代品并被发现here http://www.pytables.org/.
import tables
file = tables.open_file('test.mat')
安装使用
pip install tables
Python MATLAB 引擎如果您安装了 matlab,则可以选择读取 MAT 文件。文档可以在这里找到:适用于 Python 的 MATLAB 引擎 API http://de.mathworks.com/help/matlab/matlab-engine-for-python.html.
import matlab.engine
mat = matlab.engine.start_matlab()
f = mat.load("dataset.mat", nargout=1)