将逗号分隔的字符串属性写入HDF5数据集C ++

时间:2014-05-08 23:35:48

标签: c++ hdf5

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

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

数据基本上是柱状的,它有

等字段
Timestamp  Prop1   Prop2

现在我知道这是一个黑客攻击,但我的目的是以某种方式用“TimeStamp,Prop1,Prop2”这样的字符串来标记dset。我期待在python中读取HDF5文件,并且可以轻松读取字符串。我认为可以使用H5AWrite方法。但我不确定我们是否可以用它来编写字符串,我的问题是

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

2)如何在Python中打开文件时将其读回来。

我无法在C ++中找到任何示例。任何指针都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

以下是如何将属性编写为类似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(",")