7

Python モジュール h5py (Python 2.7) を使用して開きたい HDF5 ファイルがあります。

グループとデータセットを含むファイルがある場合、これは簡単です。

import h5py as hdf

with hdf.File(relative_path_to_file, 'r') as f:
    my_data = f['a_group']['a_dataset'].value

しかし、私の現在の状況では、グループはありません。データセットのみがあります。残念ながら、何を試してもデータにアクセスできません。次のいずれも機能しません (すべて KeyErrors または ValueErrors で壊れます):

my_data = f['a_dataset'].value #KeyError

my_data = f['/a_dataset'].value #KeyError

my_data = f['/']['a_dataset'].value #KeyError

my_data = f['']['a_dataset'].value #ValueError

my_data = f['.']['a_dataset'].value #KeyError

解決策がない場合は、グループを持つようにファイルを作り直すことができます。本当は解決策がありそうな気もしますが…

h5py がキーを認識していないようです:

f.keys()
[]
4

3 に答える 3

4

問題を見つけました。これは、h5py が対処すべき問題だと思います。

問題(最初は質問で詳しく説明するのを忘れていましたが、現在編集されています)は、相対ファイルパスでhdf5ファイルを開くことです。絶対ファイルパスを使用すると、すべてが完全に機能します。

悲しいことに、私のコードはさまざまなマシンで移植可能に実行することを目的としているため、これは将来的に問題を引き起こす可能性があります...

gspr と jimmyb の助けに感謝します :-)

于 2015-02-16T18:48:56.210 に答える
2

相対パスを使用していたときはうまくいきました。

書くには:

fileName = "data/hdf5/topo.hdf5"

with h5py.File(fileName, 'w') as f:
    dset = f.create_dataset('topography', data = z, dtype = 'float32')

データを読み取るには:

with h5py.File(fileName, 'r') as f:
    my_data = f['.']['topography'].value
于 2016-03-04T18:26:46.670 に答える
1

これはうまくいくはずだと思います:

f['.']['a_dataset']

そして、あなたはやろうとするかもしれません:

dir(f['/']) 
dir(f['.'])
于 2015-02-16T18:15:57.513 に答える