首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[Errno -101\] NetCDF:打开netcdf文件时的HDF错误

[Errno -101\] NetCDF:打开netcdf文件时的HDF错误
EN

Stack Overflow用户
提问于 2018-03-16 10:04:16
回答 2查看 13.8K关注 0票数 5

打开netcdf文件时出现了此错误。代码以前起作用了。如何解决这个问题?

回溯(最近一次调用): 文件"",第1行,在…… 文件"file.py",第71行,在gather_vgt返回xr.open_dataset(文件名) 文件"/.../lib/python3.6/site-packages/xarray/backends/api.py",第286行,在open_dataset autoclose=autoclose中) 文件"/.../lib/python3.6/site-packages/xarray/backends/netCDF4_.py",第275行,在open ds = opener()中 文件"/.../lib/python3.6/site-packages/xarray/backends/netCDF4_.py",第199行,以_open_netcdf4_group ds =nc4.Dataset(文件名,mode=mode,**kwargs)为单位 文件“netCDF4 4/_netCDF4.pyx”,第2015行,在netCDF4._netCDF4.Dataset.init中 netCDF4._netCDF4._ensure_nc_success文件“netCDF4 4/_netCDF4.pyx”,第1636行 OSError: Errno -101 NetCDF: HDF错误: b'file.nc‘

当我试图用h5py打开同一个netcdf文件时,我会得到以下错误:

OSError:无法打开文件(此文件系统上禁用文件锁定(使用HDF5_USE_FILE_LOCKING环境变量覆盖),errno = 38,错误消息=‘.’)

EN

回答 2

Stack Overflow用户

发布于 2018-03-16 10:04:16

你一定处于这样的情况:

  • 您的HDF5库已经更新(1.10.1) (netcdf在幕后使用HDF5 )
  • 您的文件系统不支持HDF5库使用的文件锁定。

为了读取hdf5或netcdf文件,需要设置以下环境变量

代码语言:javascript
复制
 HDF5_USE_FILE_LOCKING=FALSE

作为参考,这是在HDF5版本1.10.1中介绍的,

添加了禁用SWMR文件锁定方案的机制。HDF5 1.10.0中使用的文件锁定调用(包括patch1) 当基础文件系统不支持文件时,将失败。 锁定或已禁用锁的位置。禁用所有文件 锁定操作,一个名为 可以将HDF5_USE_FILE_LOCKING设置为五个字符的字符串。 “法斯”。这不会从根本上改变HDF5库。 操作(除了打开/创建初始文件外,SWMR没有锁定), 但是用户必须更加小心地打开文件。 为了避免有问题的访问模式(即:多个写入器)>文件锁定被设计为防止。此外,当文件锁定时发出的错误消息。 操作将errno设置为ENOSYS (典型的情况是文件锁定)。 )已经更新,以描述问题和潜在的 决心更好。(DER,2016/10/26,HDFFV-9918)

票数 13
EN

Stack Overflow用户

发布于 2020-07-02 06:24:29

在我的例子中,@Florian建议的解决方案没有效果。我找到了另一种解决方案,这表明导入h5pynetCDF4的顺序很重要(参见这里)。

事实上,以下几点对我来说是可行的:

代码语言:javascript
复制
from netCDF4 import Dataset
import h5py

如OP所述,切换顺序会导致错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49317927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档