Проверьте, существует ли узел в h5py

Мне интересно, есть ли простой способ проверить, существует ли узел в файле HDF5, используя h5py.

Я ничего не нашел в документах, поэтому сейчас я использую исключения, что некрасиво.

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

Чтобы добавить контекст: я использую это, чтобы определить, существует ли узел, прежде чем пытаться создать новый узел с тем же именем.


person troy.unrau    schedule 01.08.2012    source источник


Ответы (3)


e = "/some/path" in h5File

Имеет ли это. Это очень кратко упоминается в документации Group.

person Danica    schedule 01.08.2012

Вы также можете просто использовать метод require_group() для групп. Документы H5py.

person Jagrut    schedule 03.07.2018

После проверки документации в документы группы. Я предполагаю, что вы можете использовать метод ключей объекта группы для проверки перед использованием:

# check if node exists
# first assume it doesn't exist
e = False
node = "/some/path"
if node in h5file.keys():
    h5File[node]
    e = True
person AngelM1981    schedule 01.08.2012
comment
В Python 2 это фактически загрузит весь набор ключей в список, а затем выполнит линейный поиск по этому списку, тогда как использование __contains__ (т.е. "/some/path" in h5file) проверит его гораздо более непосредственно. Кроме того, это не будет работать для приведенного примера, только если это член верхнего уровня. - person Danica; 01.08.2012
comment
Я думал об этом, но это не работает для встроенных членов. Кроме того, я не знал о последствиях для эффективности... спасибо! - person troy.unrau; 01.08.2012