2012-08-01 10 views
11

Zastanawiasz się, czy istnieje prosty sposób sprawdzenia, czy istnieje węzeł w pliku HDF5 za pomocą h5py.Sprawdź, czy istnieje węzeł w h5py

Nie mogłem znaleźć niczego w dokumentach, więc teraz używam wyjątków, które są brzydkie.

# check if node exists 
# first assume it exists 
e = True 
try: 
    h5File["/some/path"] 
except KeyError: 
    e = False # now we know it doesn't 

Aby dodać kontekst: Używam tego celu określenia, czy węzeł istnieje przed próbą utworzenia nowego węzła o tej samej nazwie.

Odpowiedz

0

Po sprawdzeniu dokumentacji pod numerem group docs. Zakładam, że możesz użyć metody klawiszy obiektu grupowego do sprawdzenia przed użyciem:

# check if node exists 
# first assume it doesn't exist 
e = False 
node = "/some/path" 
if node in h5file.keys(): 
    h5File[node] 
    e = True 
+1

W Pythonie 2 spowoduje to załadowanie całego zestawu kluczy do listy, a następnie przeszukiwanie liniowe na tej liście, podczas gdy użycie '__contains__' (tj.' "/ some/path" w h5file') sprawdzi to znacznie bardziej bezpośrednio. Ponadto nie będzie działać dla podanego przykładu, tylko jeśli jest członkiem najwyższego poziomu. – Dougal

+0

Rozważałem to, ale to nie działa dla członków osadzonych. Ponadto, nie wiedziałem o skutkach wydajności ... dzięki! –