2016-06-29 37 views
9

私はH5PYを使用してPythonで、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を使って同じファイルを正常に開くことができました。ファイルが存在し、アクセス可能であることを確認したので、エラーの原因がわからない。何かアドバイスが大幅に事前に、感謝をいただければ幸いです。)

答えて

1

通常メッセージFile signature not foundのいずれかを示します。

1.あなたのファイルが破損しています。

...私はおそらくそうだと思います。あなたは以前にファイルを開いたと言いました。ファイルを破損する可能性のあるファイルハンドルを閉じるのを忘れたかもしれません。 HDF5ユーティリティh5debugでファイルをチェックしてみてください(ご使用のOSにhdf5ライブラリをインストールしている場合はコマンドラインで、Linuxではdpkg -s libhdf5-devをチェックしてください)。

2.ファイルがHDF5形式ではありません。

これは、エラーメッセージの原因として知られています。しかし、あなたはこれが事実であり、前にファイルを開いたと確信していたので、私はここで遭遇する可能性がある他の人のために参考にしています:

バージョン7.3以降Matlabファイルは、MAT-File Level 5 Containers(more doc)のHDF5ベースのフォーマットを使用します。以前のバージョンのMAT-ファイル(V4(レベル1.0)、7.2 V6およびV7は)でサポートされており、scipy図書館で読むことができます:

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

そうでない場合は、あなたが他の方法を試して見ることができるかどうかエラーが続く:

PyTablesは、h5pyの代替品であり、hereです。

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

PythonのMATLABエンジンは、MATLABインストールした場合、MATファイルを読み取るための代替です。ドキュメントはMATLAB Engine API for Pythonにあります。

import matlab.engine 
mat = matlab.engine.start_matlab() 
f = mat.load("dataset.mat", nargout=1) 
関連する問題