2017-06-27 3 views
0

Ich mag würde eine HDF5 Dateistruktur mit h5py zuzugreifen, wobei die Gruppen und Datensätze wie folgt gespeichert werden:HDF5 Dateistruktur Zugriff während bestimmte Gruppen Weglassen und Datensätze

/Group 1/Sub Group 1/*/Data set 1/ 

wobei das Sternchen bedeutet einen sub- Untergruppe, die eine eindeutige Adresse hat. Ihre Adresse ist jedoch irrelevant, da ich mich einfach für die enthaltenen Datensätze interessiere. Wie kann ich auf eine beliebige Untergruppe zugreifen, ohne die eindeutige Adresse angeben zu müssen? Hier

ist ein Skript für einen konkreten Fall:

import h5py as h5 
deleteme = h5.File("deleteme.hdf5", "w") 
nobody_in_particular = deleteme.create_group("/grp_1/subgr_1/nobody_in_particular/") 
dt = h5.special_dtype(vlen=str) 
dataset_1 = nobody_in_particular.create_dataset("dataset_1",(1,),dtype=dt) 
dataset_1.attrs[str(1)] = "Some useful data 1" 
dataset_1.attrs[str(2)] = "Some useful data 2" 
deleteme.close() 

# access data from nobody_in_particular subgroup and do something 
deleteme = h5.File("deleteme.hdf5", "r") 
deleteme["/grp_1/subgr_1/nobody_in_particular/dataset_1"] 

Dies gibt Ausgang:

<HDF5 dataset "dataset_1": shape (1,), type "|O"> 

Jetzt möchte ich das gleiche Ergebnis erreichen, jedoch ohne zu wissen, wer (oder die Gruppe) insbesondere . Jede zufällige Untergruppe anstelle von nobody_in_particular wird für mich tun. Wie kann ich auf diese zufällige Untergruppe zugreifen?

Mit anderen Worten:

deleteme["/grp_1/subgr_1/<any random sub-group>/dataset_1"] 
+1

Ich denke, Sie müssen nur die Untergruppen Ebenen durchlaufen, wählen Sie eine "Schlüssel" zufällig. Behandeln Sie es wie einen Zugriff auf ein tief verschachteltes Wörterbuch von Wörterbüchern. – hpaulj

Antwort

Verwandte Themen