写一个逗号分隔的字符串属性到HDF5数据集c++

Writing a comma separated string attribute to HDF5 dataset C++

本文关键字:属性 字符串 HDF5 c++ 数据集 分隔 一个      更新时间:2023-10-16

我正试图将逗号分隔的字符串属性写入HDF5数据集。我使用

创建数据集
dset = H5Dcreate(file, "dset1", H5T_NATIVE_DOUBLE, file_space, H5P_DEFAULT, plist, H5P_DEFAULT);

数据基本上是列状的,它有像

这样的字段
Timestamp  Prop1   Prop2

现在我知道这是一个hack,但它足以满足我的目的,以某种方式标记dset与字符串,如"TimeStamp, Prop1, Prop2"。我希望在python中读取HDF5文件,可以轻松读取字符串。我认为可以使用H5AWrite方法。但是我不确定我们是否可以用它写字符串,我的问题是

1)如何使用方法编写以逗号分隔的属性

2)如何在Python中打开文件时读取它。

我在c++中找不到任何例子来做它。

下面是如何将属性写为像column1,column2,column3这样的字符串(使用C API,因为您似乎在使用它,尽管要求使用c++):

hid_t atype = H5Tcopy(H5T_C_S1);
H5Tset_size(atype, H5T_VARIABLE);
hid_t attr = H5Acreate(dset, "columns", atype, H5S_SCALAR, H5P_DEFAULT);
H5Awrite(attr, atype, "column1,column2,column3");
H5Aclose(attr);

然后在Python中读取:

import h5py 
file =  h5py.File("my_file.h5", "r")
dset = file["/my_dset"]
columns = dset.attrs["columns"].split(",")