【问题标题】:Error opening file in H5PY (File signature not found)在 H5PY 中打开文件时出错(未找到文件签名)
【发布时间】:2016-10-31 14:12:33
【问题描述】:

我一直在使用以下代码打开一些在 MATLAB 中使用 H5PY 在 python 中生成的 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 成功打开过相同的文件。我已经确认这些文件存在并且可以访问,所以我不确定错误来自哪里。任何建议将不胜感激,在此先感谢:)

【问题讨论】:

  • 我猜你尝试打开 hdf v. 4 文件。 HDF5 文件的扩展名为 hdf5h5

标签: python matlab h5py


【解决方案1】:

通常消息File signature not found 表示:

1.您的文件已损坏。

...是我认为最有可能的。你说你以前打开过文件。也许您忘记关闭可能损坏文件的文件句柄。 尝试使用 HDF5 实用程序 h5debug 检查文件(如果您在操作系统上安装了 hdf5 库,则可以在命令行上使用,在 Linux 上使用 dpkg -s libhdf5-dev 检查)。

2。该文件不是 HDF5 格式。

这是您的错误消息的已知原因。但是,既然你说你确定,情况就是这样,而且你之前已经打开过文件,我给出这个仅供参考,以供可能在这里遇到问题的其他人参考:

自 2015 年 12 月(自 7.3 版起),Matlab 文件在其MAT-File Level 5 Containers(更多doc)中使用基于 HDF5 的格式。 scipy 库支持早期版本的 MAT 文件(v4(1.0 级)、v6 和 v7 到 7.2)并可以使用它读取:

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

否则你可以尝试其他方法,看看错误是否仍然存在:

PyTables 是 h5py 的替代品,可以在 here 找到。

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

使用安装

pip install tables
如果您安装了 matlab,

Python MATLAB 引擎 是读取 MAT 文件的替代方法。可在此处找到文档:MATLAB Engine API for Python

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

【讨论】:

    【解决方案2】:

    我的 .h5 文件也遇到了同样的问题。问题是我没有正确下载 .h5 文件。

    我正在执行 filename.h5->right_click->将链接另存为,没有正确下载文件(或者文件可能已损坏)。我没有这样做,而是将文件下载为:选中带有 filename.h5 的复选框并单击下载,然后我的代码就可以工作了。

    这可能对犯同样错误的人有所帮助。

    【讨论】:

      【解决方案3】:

      这通常发生在文件损坏时。我遇到了这个问题并再次下载了文件并解决了问题。

      【讨论】:

        【解决方案4】:

        如果有人在 Jupyter 中遇到此问题,您只需单击文件的复选框,然后单击下载按钮。
        我从here 得到的这个解决方案对我有帮助,希望对你们有帮助。

        【讨论】:

          【解决方案5】:

          tar -czvf zipfilename.tar.gz weightsfile 压缩文件对我有用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多