我一直在使用以下代码来打开一些HDF5文件,在MATLAB中使用H5PY在python中生成:
OSError: Unable to open file (File signature not found)
但是我收到以下错误:
var newWin = nw.Window.open('app/newWin/newWin.html', {
new_instance: true
}, function () {
// opened
console.log("opened");
});
我已经检查过我尝试打开的文件是版本7.3 MAT文件并且是HDF5格式。事实上,我之前使用H5PY成功打开了相同的文件。我已经确认文件存在且可访问,因此我不确定错误来自何处。任何建议都将非常感谢,提前谢谢:)
答案 0 :(得分:4)
通常消息File signature not found
表示:
<强> 1。您的文件已损坏。
......我认为最有可能。你说你之前打开过这些文件。也许你忘了关闭文件句柄,这可能会破坏文件。
尝试使用HDF5实用程序h5debug
检查文件(如果您在操作系统上安装了hdf5 lib,请在命令行上提供,请在Linux上查看dpkg -s libhdf5-dev
)。
<强> 2。该文件不是HDF5格式。
这是导致错误消息的已知原因。但既然你说你已经确定了,就是这种情况而且之前你已经打开过这些文件,我只是为了这个可能偶然发现的其他人提供参考:
自2015年12月起(从7.3版开始),Matlab文件在其MAT-File Level 5 Containers(更多doc)中使用基于HDF5的格式。早期版本MAT文件(v4(级别1.0),v6和v7至7.2)受scipy
库支持并可以阅读:
import scipy.io
f = scipy.io.loadmat('dataset.mat')
否则,您可以尝试其他方法,看看错误是否仍然存在:
PyTables 是h5py的替代品,可以找到here。
import tables
file = tables.openFile('test.mat')
如果安装了matlab,Python MATLAB Engine 是读取MAT文件的替代方法。文档可在此处找到:MATLAB Engine API for Python。
import matlab.engine
mat = matlab.engine.start_matlab()
f = mat.load("dataset.mat", nargout=1)
答案 1 :(得分:2)
.h5文件遇到相同的问题。问题是我没有正确下载.h5文件。
我正在执行filename.h5-> right_click->链接另存为,但未正确下载文件(或者文件可能已损坏)。我没有这样做,而是下载了文件:选择了filename.h5复选框,然后单击下载,然后我的代码起作用了。
这可能会对犯同样错误的人有所帮助。
答案 2 :(得分:0)
通常在文件损坏时会发生这种情况。我遇到了这个问题,然后再次下载了文件,它解决了问题。
答案 3 :(得分:0)
如果Jupyter中有人遇到此问题,您只需单击文件的复选框,然后单击下载按钮。
我从here获得的解决方案对我有所帮助,希望对您有帮助。