Numpy配列を格納するh5pyファイルがありますが、Object doesn't exist error
覚えているデータセット名で開こうとすると、ファイルのデータセットを一覧表示できる方法はありますか?
with h5py.File('result.h5','r') as hf:
#How can I list all dataset I have saved in hf?
Keysメソッドを使用する必要があります。これにより、データセットとグループ名のUnicode文字列のリストが表示されます。例えば:
Datasetnames=hf.keys()
別のGUIベースの方法は、HDFViewを使用することです。 https://support.hdfgroup.org/products/Java/release/download.html
キー名を一覧表示する場合は、キーオブジェクトを提供するkeys()メソッドを使用する必要があります。次に、list()メソッドを使用してキーを一覧表示します。
with h5py.File('result.h5','r') as hf:
dataset_names = list(hf.keys())
他の答えは、ルートグループの下にあるキーのリストを作成する方法を説明するだけで、他のグループまたはデータセットを参照する場合があります。
あなたがh5dumpに近いものを望んでいるが、Pythonでは、あなたはそのようなことをすることができます:
import h5py
def descend_obj(obj,sep='\t'):
"""
Iterate through groups in a HDF5 file and prints the groups and datasets names and datasets attributes
"""
if type(obj) in [h5py._hl.group.Group,h5py._hl.files.File]:
for key in obj.keys():
print sep,'-',key,':',obj[key]
descend_obj(obj[key],sep=sep+'\t')
Elif type(obj)==h5py._hl.dataset.Dataset:
for key in obj.attrs.keys():
print sep+'\t','-',key,':',obj.attrs[key]
def h5dump(path,group='/'):
"""
print HDF5 file metadata
group: you can give a specific group, defaults to the root group
"""
with h5py.File(path,'r') as f:
descend_obj(f[group])
最上位のグループの下にリストしたいが、ツリーを降りるための独自のコードを書きたくない場合は、visit()関数を試してください。
with h5py.File('result.h5','r') as hf:
hf.visit(print)
または、より高度なもの(属性情報を含めるなど)には、visititemsを使用します。
def printall(name, obj):
print(name, dict(obj.attrs))
with h5py.File('result.h5','r') as hf:
hf.visititems(printall)
基礎となるデータセットの名前を示すために、単にh5dump -n <filename>
pythonスクリプトを実行しない場合です。