• 0238494791
  • spgoo.ecpy@gmail.com

En ouvrant un fichier hdf5 avec le module hdf5 de python, on obtient des dictionnaires contenus dans des dictionnaires qu'on peut visualiser de la façon suivante en utilisant une récurrence:

import h5py
def print_hdf5_tree(
        val, # initial dictionnary 
        pre='',
    ):
    items = len(val)
    for key, val in val.items():
        items -= 1
        if items == 0:
            # the last item
            if type(val) == h5py._hl.group.Group:
                print(pre + '└── ' + key)
                print_hdf5_tree(val, pre+'    ')
            else:
                try:
                    print(pre + '└── ' + key + ' (%d)' % len(val))
                except TypeError:
                    print(pre + '└── ' + key + ' (scalar)')
        else:
            if type(val) == h5py._hl.group.Group:
                print(pre + '├── ' + key)
                print_hdf5_tree(val, pre+'│   ')
            else:
                try:
                    print(pre + '├── ' + key + ' (%d)' % len(val))
                except TypeError:
                    print(pre + '├── ' + key + ' (scalar)')

def show_hdf5_tree(
        fname, # hdf5 file
    ):
    """
    show the structure of a hdf5 file.
    """
    with h5py.File(fname, 'r') as hf:
        print(hf)
        print_hdf5_tree(hf)