Uso il pacchetto Python h5py (versione 2.5.0) per accedere ai miei file hdf5.Come distinguere tra set di dati HDF5 e gruppi con h5py?
Voglio attraversare il contenuto di un file e fare qualcosa con ogni set di dati.
Usando il metodo 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)
per un file di test ottengo:
<HDF5 group "/x" (1 members)>
<class 'h5py._hl.group.Group'>
<HDF5 dataset "y": shape (100, 100, 100), type "<f8">
<class 'h5py._hl.dataset.Dataset'>
che mi dice che c'è un insieme di dati e un gruppo nel file. Tuttavia, non esiste un modo ovvio tranne che per utilizzare type()
per distinguere tra i set di dati e i gruppi. Il h5py documentation purtroppo non dice nulla su questo argomento. Presuppongono sempre che tu sappia in anticipo quali sono i gruppi e quali sono i set di dati, ad esempio perché hanno creato i set di dati stessi.
Mi piacerebbe avere qualcosa di simile:
f = h5py.File(..)
for key in f.keys():
x = f[key]
print(x.is_group(), x.is_dataset()) # does not exist
Come posso distinguere tra i gruppi e le serie di dati durante la lettura di un file HDF5 sconosciuta in Python con h5py? Come posso ottenere un elenco di tutti i set di dati, di tutti i gruppi, di tutti i link?
Grazie. Immagino che tutti i gruppi derivino da "h5py.Group", tutti i collegamenti "soft" da "h5py.SoftLink" e tutti gli hard link da "h5py.HardLink". – Trilarion
Ho, un'eccezione che ho dimenticato di menzionare. Se ricordo male, '' visititems'' non visita i link esterni. – Gall