【发布时间】:2017-06-27 17:27:20
【问题描述】:
我想使用h5py 访问 HDF5 文件结构,其中组和数据集存储如下:
/Group 1/Sub Group 1/*/Data set 1/
其中星号表示具有唯一地址的子组。但是,它的地址无关紧要,因为我只是对它包含的数据集感兴趣。如何在不指定唯一地址的情况下访问任意子子组?
这是一个特定案例的脚本:
import h5py as h5
deleteme = h5.File("deleteme.hdf5", "w")
nobody_in_particular = deleteme.create_group("/grp_1/subgr_1/nobody_in_particular/")
dt = h5.special_dtype(vlen=str)
dataset_1 = nobody_in_particular.create_dataset("dataset_1",(1,),dtype=dt)
dataset_1.attrs[str(1)] = "Some useful data 1"
dataset_1.attrs[str(2)] = "Some useful data 2"
deleteme.close()
# access data from nobody_in_particular subgroup and do something
deleteme = h5.File("deleteme.hdf5", "r")
deleteme["/grp_1/subgr_1/nobody_in_particular/dataset_1"]
这给出了输出:
<HDF5 dataset "dataset_1": shape (1,), type "|O">
现在我希望完成相同的结果,但不知道具体是谁(或哪个组)。任何代替nobody_in_particular 的随机子组都可以。我怎样才能访问这个随机子组?
换句话说:
deleteme["/grp_1/subgr_1/<any random sub-group>/dataset_1"]
【问题讨论】:
-
我认为您只需要向下迭代子组级别,随机选择
key。将其视为访问深度嵌套的字典。
标签: python-3.x h5py