我一直在使用以下代码在 python 中使用 H5PY 打开一些在 MATLAB 中生成的 HDF5 文件:
import h5py as h5
data='dataset.mat'
f=h5.File(data, 'r')
但是我收到以下错误:
OSError: Unable to open file (File signature not found)
我检查过我尝试打开的文件是 7.3 版 MAT 文件并且是 HDF5 格式。事实上,我以前曾使用 H5PY 成功打开过相同的文件。我已经确认这些文件存在并且可以访问,所以我不确定错误的来源。任何建议将不胜感激,提前致谢:)
原文由 Anisha Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议
通常消息
File signature not found
表示:1. 您的文件已损坏。
……我觉得可能性最大。你说你以前打开过文件。也许您忘记关闭可能损坏文件的文件句柄。尝试使用 HDF5 实用程序
h5debug
检查文件(如果您在操作系统上安装了 hdf5 库,则在命令行上可用,在 Linux 上使用dpkg -s libhdf5-dev
检查)。2.文件不是HDF5格式。
这是您的错误消息的已知原因。但是既然你说你确定是这种情况并且你之前已经打开过文件,那么我给出这个只是供其他可能在这里绊倒的人参考:
自 2015 年 12 月(从版本 7.3 开始),Matlab 文件在其 MAT 文件级别 5 容器 中使用基于 HDF5 的格式(更多 文档)。早期版本的 MAT 文件(v4(1.0 级)、v6 和 v7 到 7.2)受
scipy
库支持并可以读取:否则您可以尝试其他方法,看看错误是否仍然存在:
PyTables 是 h5py 的替代品,可在 此处 找到。
安装使用
如果您安装了 matlab,则 Python MATLAB Engine 是读取 MAT 文件的替代方法。文档可在此处找到: MATLAB Engine API for Python 。