我使用Python包h5py(版本2.5.0)访问我的hdf5文件。
我想遍历文件的内容并对每个数据集执行一些操作。
使用visit方法:
visit
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文档未对此主题进行任何说明。他们始终假设您事先知道什么是组,什么是数据集,例如,因为他们自己创建了数据集。
type()
我想要类似的东西:
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)。
is_dataset = isinstance(item, h5py.Dataset)
要列出文件的所有内容(尽管文件属性除外),您可以Group.visititems将其与带有项目名称和实例的可调用对象一起使用。
Group.visititems