您可以使用组对象提取 hdf5 的文件对象吗?

Can you extract the file object of an hdf5 using a group object?

我使用

在 ipython 中打开了一个 hdf5 文件
import h5py as h5
f = h5.File("fname.h5", "r")

然后我访问了那个文件中的一个组

g1 = f['group1']

然后我不小心用另一个文件覆盖了f。第一个文件仍然打开,我可以访问 g1 中的内容,但我无法访问 f 中的任何其他组。有没有办法使用 g1 来取回文件对象?当然我也可以直接关闭文件再打开,但是我想知道有没有别的办法

不确定这个问题是否值得存在,但我找到了答案。组有一个指向父级的 parent 属性。要获取原始文件,只需使用 f = g1.parent.

编辑:实际上,虽然这允许您从 / 访问组,但新的 f 将引用 /,不是文件。因此,您无法使用 f 关闭文件或访问任何其他文件属性。

您可以使用群组的 file 属性:

f = g1.file

根据 docsGroup 属性:

file
File instance in which this group resides.