31

I am wondering if there is a simple way to check if a node exists within an HDF5 file using h5py.

I couldn't find anything in the docs, so right now I'm using exceptions, which is ugly.

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

To add context: I'm using this to determine if a node exists before trying to create a new node with the same name.

nbro
  • 15,395
  • 32
  • 113
  • 196
troy.unrau
  • 1,142
  • 2
  • 12
  • 26

3 Answers3

53
e = "/some/path" in h5File

does it. This is very briefly mentioned in the Group documentation.

loki
  • 9,816
  • 7
  • 56
  • 82
Danica
  • 28,423
  • 6
  • 90
  • 122
3

You can also simply use require_group() method for groups. H5py Docs.

Jagrut
  • 922
  • 7
  • 21
1

After checking the documentation at group docs. I assume you can use the keys method of the group object to check before usage:

# check if node exists
# first assume it doesn't exist
e = False
node = "/some/path"
if node in h5file.keys():
    h5File[node]
    e = True
AngelM1981
  • 141
  • 5
  • 3
    In Python 2, this will actually load the entire set of keys into a list and then do linear search over this list, whereas using `__contains__` (i.e. `"/some/path" in h5file`) will check it much more directly. Also, it won't work for the example given, only if it's a top-level member. – Danica Aug 01 '12 at 07:47
  • I considered this, but it doesn't work for embedded members. Also, I was not aware of the efficiency implications... thanks! – troy.unrau Aug 01 '12 at 08:01