在Julia中打开HDF5文件。

3

我有一台运行Windows 10的电脑,安装了Julia 1.7.2和HDF v"0.16.2"。在打开一个HDF5文件时遇到了问题:

using HDF5
raw_hdf_data = h5open("Data_2021-03-17_11-21-19.h5", "r")  
obj = raw_hdf_data["Group"]["Data_1"]
HDF5.read(obj)

但是出现了错误:

HDF5.API.H5Error: 读取数据集 /Flatfield/Data_1 出错
libhdf5 Stacktrace:
[1] H5PL__find_plugin_in_path: 动态加载库的插件/无法打开目录或文件
无法打开目录

[11] H5Dread: 数据集/读取失败
无法读取数据

Stacktrace:
[1] 宏扩展 @ C:\Users\jhsu.julia\packages\HDF5\auFb7\src\api\error.jl:18 [内联]
[2] h5d_read(dataset_id::HDF5.Dataset, mem_type_id::HDF5.Datatype, mem_space_id::HDF5.Dataspace, file_space_id::HDF5.Dataspace, xfer_plist_id::HDF5.DatasetTransferProperties, buf::Matrix{Int64}) @ HDF5.API C:\Users\jhsu.julia\packages\HDF5\auFb7\src\api\functions.jl:508

[3] generic_read(::HDF5.Dataset, ::HDF5.Datatype, ::Type{Int64}) @ HDF5 C:\Users\jhsu.julia\packages\HDF5\auFb7\src\HDF5.jl:978
[4] read(obj::HDF5.Dataset) @ HDF5 C:\Users\jhsu.julia\packages\HDF5\auFb7\src\HDF5.jl:878
[5] (::var"#66#67")(fid::HDF5.File) @ Main .\In[68]:3
[6] h5open(::var"#66#67", ::String, ::Vararg{String, N} where N; swmr::Bool, pv::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ HDF5 C:\Users\jhsu.julia\packages\HDF5\auFb7\src\HDF5.jl:287
[7] h5open(::Function, ::String, ::String) @ HDF5 C:\Users\jhsu.julia\packages\HDF5\auFb7\src\HDF5.jl:285
[8] 顶层作用域 @ In[68]:1
[9] eval @ .\boot.jl:360 [内联]
[10] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String) @ Base .\loading.jl:1116

非常感谢!


错误信息不清楚是找不到插件还是找不到文件本身。您能在当前目录上执行 ls 命令(;lsrun(\ls`)`)并验证您要打开的文件是否在该列表中返回吗? - Sundar R
1个回答

1

当我更新我的HDF5库时,我遇到了同样的问题。
可能文件已经被压缩,需要使用以下插件之一。请尝试:

] add H5Zblosc, H5Zbzip2, H5Zlz4, H5Zzstd
using HDF5, H5Zblosc, H5Zbzip2, H5Zlz4, H5Zzstd
raw_hdf_data = h5open("Data_2021-03-17_11-21-19.h5", "r")  
...

现在它应该打开文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接