【发布时间】:2023-03-07 22:51:01
【问题描述】:
我正在尝试将 test.sample(state) 的输出分配给名为 test_out.h5 的文件,特别是创建一个名为 sample_ 的新组。然而,即使它编译和运行正常(作为无法简化为最小工作示例的更大代码的一部分),当我尝试打开文件时,我得到“无法打开对象(找不到组件)”。我知道 this 和 this 的存在,但我没有发现它们有帮助。
size_t num=5;
{
std::string test_out = "test_out.h5";
H5::H5File f(test_out, H5F_ACC_TRUNC);
for (size_t m = 0; m < num; m++){
string name=std::to_string(m);
H5::Group grp = f.createGroup("sample_"+name);
test.sample(state);
state.saveState(grp);}
H5close();
}
我正在尝试在 Python3 中打开文件,如下所示:
f4=h5py.File('<my_dir>/test_out.h5', 'r')
print(list(f4.keys()))
它就在那里失败了。
如果有人能指出错误,我将不胜感激。请记住,我不应该更改 C++ 代码中使用的任何包。
更新:相同的例程在另一台计算机上打开了文件,所以我仍在试图找出我的 h5py 安装突然出现的问题。
【问题讨论】:
-
请不要不必要地重复问题标题中的标签。
-
首先要确定:是您的 h5py 安装或文件 (test_out.h5) 的问题。文件有效性测试:1) 运行 h5dump test_out.h5,2) 使用 HDFViewer 实用程序打开 test_out.h5。
-
刚刚在另一台电脑上打开了文件,所以问题是我的h5py安装。它以前工作得很好,我卸载并重新安装,但错误仍然存在。