我如何知道节点是SoftLink
还是HardLink
还是ExternalLink
?
例如,提供fh = h5py.File('test.h5')
和/soft_link
SoftLink
,我尝试了type(fh['soft_link'])
,并且显示它的类型为Group
,相同作为常规Group
节点。
BTW,似乎fh.visititems
没有访问Link
个节点,我可以理解这可以避免两次访问SoftLink
和HardLink
的目标节点,但是为什么ExternalLink
也被忽略了?
答案 0 :(得分:0)
这有点晚了,但对某人可能有用。实际上,当前的h5py
版本支持该功能(我不知道是否可以及时返回)。
实际上很容易:
is_soft_link = isinstance(fh.get('soft_link', getlink=True), h5py.SoftLink)
对于其他情况,只需将h5py.SoftLink
替换为h5py.HardLink
或h5py.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
部分以获取更多信息。