如何检查节点是否是h5py中的链接?

时间:2016-07-20 22:28:09

标签: python hdf5 h5py

我如何知道节点是SoftLink还是HardLink还是ExternalLink

例如,提供fh = h5py.File('test.h5')/soft_link SoftLink,我尝试了type(fh['soft_link']),并且显示它的类型为Group,相同作为常规Group节点。

BTW,似乎fh.visititems没有访问Link个节点,我可以理解这可以避免两次访问SoftLinkHardLink的目标节点,但是为什么ExternalLink也被忽略了?

2 个答案:

答案 0 :(得分:0)

这有点晚了,但对某人可能有用。实际上,当前的h5py版本支持该功能(我不知道是否可以及时返回)。

实际上很容易:

is_soft_link = isinstance(fh.get('soft_link', getlink=True), h5py.SoftLink)

对于其他情况,只需将h5py.SoftLink替换为h5py.HardLinkh5py.ExternalLink

答案 1 :(得分:0)

不确定如何在h5py中完成此操作,但是如果您未绑定到特定的库,可以在HDFql中进行以下操作:

HDFql.execute("SHOW TYPE my_dataset")

HDFql.cursor_next()

type = HDFql.cursor_get_int()

if (type & HDFql.SOFT_LINK):
   print('IT IS A SOFT LINK')
elif (type & HDFql.EXTERNAL_LINK):
   print('IT IS AN EXTERNAL LINK')
else:
   print('IT IS A HARD LINK')

请检查HDFql reference manual中的6.7.7部分以获取更多信息。