2017-01-04 50 views
0

私はHDF5ファイルをPythonで読むためにオープンしようとしています。ファイルを読むためにプログラムを実行するとエラーが発生します。私はこのエラーを見終わるプログラムを実行した場合Pythonは.h5ファイルを開くことができません

import h5py # HDF5 support 
import numpy 

fileName = "C:/.../file.h5" 
f = h5py.File(fileName, "r") 
for item in f.attrs.keys(): 
    print item + ":", f.attrs[item] 
mr = f['/entry/mr_scan/mr'] 
i00 = f['/entry/mr_scan/I00'] 
print "%s\t%s\t%s" % ("#", "mr", "I00") 
for i in range(len(mr)): 
    print "%d\t%g\t%d" % (i, mr[i], i00[i]) 
f.close() 

:プログラムは以下の通りです

Traceback (most recent call last): 
File "TestHD5.py", line 8, in <module> 
    mr = f['/entry/mr_scan/mr'] 
File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper (C:\aroot\work\h5py\_objects.c:2587) 
File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper (C:\aroot\work\h5py\_objects.c:2546) 
File "C:\programs\Python27\lib\site-packages\h5py\_hl\group.py", line 166, in __getitem__ 
    oid = h5o.open(self.id, self._e(name), lapl=self._lapl) 
File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper (C:\aroot\work\h5py\_objects.c:2587) 
File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper (C:\aroot\work\h5py\_objects.c:2546) 
File "h5py\h5o.pyx", line 190, in h5py.h5o.open (C:\aroot\work\h5py\h5o.c:3417) 
KeyError: 'Unable to open object (Component not found)' 

を私は単にファイルを読むためにいくつかのモジュールを欠落している、またはこれは何か他のものであると思います。 h5ファイルのveiwerプログラムを使用すると、.h5ファイルが開きます。ありがとう

+1

コードの画像や出力を投稿しないでください。コードと出力を直接貼り付けるので、作業がはるかに簡単です。 –

+0

申し訳ありませんが、これがより良いものになることを願っています@RushyPanchal –

+0

申し訳ありません、これでより良い結果が期待できます@RadLexus –

答えて

2

あなたの文字列:

path = "C:\Users\312001\m2020\data\20170104_145626\doPoint_20170104_150016\dataset_XMIT data_20170104_150020.h5" 

が壊れたのがいっぱいです/違法、とescapesは(あなたは、Python 2を使用しているものの、ありがたいことに、彼らは、SyntaxErrorのに変換されます)、実際に作業を行うこと、いくつか、そうPythonはpathが実際には'C:\\Users\xca001\\m2020\\data\x8170104_145626\\doPoint_20170104_150016\\dataset_XMIT data_20170104_150020.h5'と等しいと考えています(これらは\x##です)。

あなたのオプション:

  1. は、パスのバックスラッシュを使用しないでくださいr
  2. でリテラル文字列を前置してraw stringを使用してください。 Pythonは、Windowsパスのスラッシュをバックスラッシュに変換します。
  3. ダブルバックスラッシュ。
+0

UnicodeDecodeErrorを取り除きました。端末が表示されていましたが、現在表示されている内容を見ることができるように編集してください。まだファイルを開くことができません。 –

0

@NickTが投稿した答えは、私が持っていたオリジナルの問題を修正しました。新しいバージョンに表示される問題は、hd5ファイル内のhd5フォルダ名が、コードが提供するフォルダ名と一致しないためです。

関連する問題