2012-08-01 21 views
11

Se pregunta si hay una manera simple de verificar si un nodo existe dentro de un archivo HDF5 usando h5py.Compruebe si existe un nodo en h5py

No pude encontrar nada en los documentos, así que ahora estoy usando excepciones, lo cual es feo.

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

Para añadir contexto: Estoy usando esto para determinar si existe un nodo antes de intentar crear un nuevo nodo con el mismo nombre.

Respuesta

0

Después de consultar la documentación en group docs. Asumo que puede utilizar el método claves del objeto de grupo para comprobar antes de su uso:

# 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

En Python 2, esto va a cargar todo el conjunto de teclas en una lista y luego hacer una búsqueda lineal en esta lista, mientras que el uso '__contains__' (es decir,' "/ some/path" en h5file') lo comprobará mucho más directamente. Además, no funcionará para el ejemplo dado, solo si es un miembro de nivel superior. – Dougal

+0

Lo consideré, pero no funciona para los miembros integrados. Además, no estaba al tanto de las implicaciones de eficiencia ... ¡gracias! –