¿Cómo diferenciar entre conjuntos de datos HDF5 y grupos con h5py?

Uso el paquete Python h5py (versión 2.5.0) para acceder a mis archivos hdf5.

Quiero atravesar el contenido de un archivo y hacer algo con cada conjunto de datos.

Utilizando lavisit método:

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)

para un archivo de prueba obtengo:

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

que me dice que hay un conjunto de datos y un grupo en el archivo. Sin embargo, no hay una manera obvia, excepto para usartype() para diferenciar entre los conjuntos de datos y los grupos. losdocumentación h5py lamentablemente no dice nada sobre este tema. Siempre asumen que sabe de antemano cuáles son los grupos y cuáles son los conjuntos de datos, por ejemplo, porque ellos mismos crearon los conjuntos de datos.

Me gustaría tener algo como:

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

¿Cómo puedo diferenciar entre grupos y conjuntos de datos al leer un archivo hdf5 desconocido en Python con h5py? ¿Cómo puedo obtener una lista de todos los conjuntos de datos, de todos los grupos, de todos los enlaces?

Respuestas a la pregunta(5)

Su respuesta a la pregunta