如何知道节点是SoftLink、HardLink还是ExternalLink
例如,为fh = h5py.File('test.h5')和/soft_link提供一个SoftLink,我尝试了type(fh['soft_link']),结果显示它属于Group类型,与常规的Group节点相同。
顺便说一下,fh.visititems似乎没有访问Link节点,我可以理解这可以避免两次访问SoftLink和HardLink的目标节点,但是为什么ExternalLink也被忽略了呢?
发布于 2020-12-16 19:36:48
虽然有点晚,但对某些人来说可能是有用的。实际上,当前版本的h5py支持它(我不知道以前是不是这样)。
实际上,这很简单:
is_soft_link = isinstance(fh.get('soft_link', getlink=True), h5py.SoftLink)对于其他情况,只需将h5py.SoftLink替换为h5py.HardLink或h5py.ExternalLink即可。
发布于 2020-12-17 05:17:26
我不确定在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部分。
https://stackoverflow.com/questions/38491902
复制相似问题