【发布时间】:2018-05-19 21:14:05
【问题描述】:
我有一个 HDF5 文件说 Select.h5 ,但除了文件名,我对文件一无所知,如何使用 c++ 从这个文件名中知道属性名称和数据集名称
【问题讨论】:
-
嗨,欢迎来到堆栈溢出。请参阅How to Ask 链接以获取有关如何提出问题并相应更新您的问题的更多详细信息。
我有一个 HDF5 文件说 Select.h5 ,但除了文件名,我对文件一无所知,如何使用 c++ 从这个文件名中知道属性名称和数据集名称
【问题讨论】:
在 C++ 中使用 HDFql (http://www.hdfql.com),您可以打开一个名为“example.h5”的 HDF5 文件,如下所示:
HDFql::execute("USE FILE example.h5");
从那里,检索存储在组“/”(即 HDF5 文件的根目录)中的对象的名称(即组、数据集、属性),如下所示:
HDFql::execute("SHOW /");
要仅检索存储在“/”中的属性,请包含关键字 ATTRIBUTE:
HDFql::execute("SHOW ATTRIBUTE /");
要检索 HDF5 文件中存在的所有对象(从“/”开始),请使用关键字“LIKE **”:
HDFql::execute("SHOW / LIKE **");
要检索 HDF5 文件中存在的所有数据集(从“/”开始):
HDFql::execute("SHOW DATASET / LIKE **");
【讨论】:
SHOW 命令默认将结果放在光标处;但是,您可以将结果重定向到文件或内存中(即用户定义的变量)。示例:SHOW INTO FILE output.txt 或 SHOW INTO MEMORY 0(0 是分配给预先注册的变量的编号)。要访问实际属性并在控制台中打印它,可以执行以下操作(假设结果存储在游标中):HDFql::cursorFirst();, std::cout << HDFql::cursorGetChar();
我们可以使用 Group ID 来实现这一点,一旦您创建了 HdF5 文件,默认组将创建名称为 '/'(表示根组),
因此,我们可以从该组中使用 DataSet 元数据获取 HDF5 文件的 DataSet 信息,我们可以获取有关属性的信息,包括其名称
【讨论】: