其他分享
首页 > 其他分享> > 如何使用h5py区分HDF5数据集和组?

如何使用h5py区分HDF5数据集和组?

作者:互联网

我使用Python包h5py(版本2.5.0)来访问我的hdf5文件.

我想遍历文件的内容并对每个数据集执行某些操作.

使用访问方法:

import h5py

def print_it(name):
    dset = f[name]
    print(dset)
    print(type(dset))


with h5py.File('test.hdf5', 'r') as f:
    f.visit(print_it)

对于我获得的测试文件:

<HDF5 group "/x" (1 members)>
<class 'h5py._hl.group.Group'>
<HDF5 dataset "y": shape (100, 100, 100), type "<f8">
<class 'h5py._hl.dataset.Dataset'>

这告诉我文件中有一个数据集和一个组.然而,除了使用type()来区分数据集和组之外,没有明显的方法.不幸的是,h5py documentation对此话题一无所知.他们总是假设您事先知道什么是组以及数据集是什么,例如因为他们自己创建了数据集.

我希望有类似的东西:

f = h5py.File(..)
for key in f.keys():
    x = f[key]
    print(x.is_group(), x.is_dataset()) # does not exist

在使用h5py读取Python中的未知hdf5文件时,如何区分组和数据集?如何获取所有链接中所有组的所有数据集的列表?

解决方法:

不幸的是,在h5py api中没有内置的方法可以检查这个,但你只需用is_dataset = isinstance(item,h5py.Dataset)检查项目的类型.

要列出文件的所有内容(但文件的属性除外),您可以使用Group.visititems和callable,它可以获取项目的名称和实例.

标签:python,hdf5,h5py
来源: https://codeday.me/bug/20191004/1854366.html