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

Flo*_*ian 1 hdf5 netcdf h5py netcdf4

打开我的netcdf文件时出现此错误。该代码之前工作。 我该如何解决 ?

追溯(最近一次通话):

文件“”,行1,在...

collect_vgt中第71行的文件“ file.py”返回xr.open_dataset(filename)

在open_dataset autoclose = autoclose中的文件“ /.../lib/python3.6/site-packages/xarray/backends/api.py”,行286

在打开的ds = opener()中,文件“ /.../lib/python3.6/site-packages/xarray/backends/netCDF4_.py”,第275行

在_open_netcdf4_group ds = nc4.Dataset中的文件“ /.../lib/python3.6/site-packages/xarray/backends/netCDF4_.py”,第199行ds = nc4.Dataset(文件名,mode = mode,** kwargs)

netCDF4._netCDF4.Dataset中的文件“ netCDF4 / _netCDF4.pyx”,行2015。在里面

netCDF4._netCDF4._ensure_nc_success中的文件“ netCDF4 / _netCDF4.pyx”,行1636

OSError:[Errno -101] NetCDF:HDF错误:b'file.nc'

当我尝试使用h5py打开相同的netcdf文件时,出现此错误:

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

Flo*_*ian 5

您必须处于这种情况:

  • 您的HDF5库已更新(1.10.1)(netcdf在后台使用HDF5)

  • 您的文件系统不支持HDF5库使用的文件锁定。

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

 HDF5_USE_FILE_LOCKING=FALSE
Run Code Online (Sandbox Code Playgroud)

作为参考,它是在HDF5版本1.10.1中引入的,

添加了禁用SWMR文件锁定方案的机制。


当基础文件系统不支持文件
锁定或已禁用锁定时,HDF5 1.10.0(包括patch1)中使用的文件锁定调用将失败。要禁用所有文件
锁定操作,
可以将名为HDF5_USE_FILE_LOCKING 的环境变量设置为五个字符的字符串
“ FALSE”。这从根本上不会改变HDF5库的
操作(除了打开/创建初始文件之外,SWMR是无锁的),
但是用户在打开文件时必须更加小心。
为了避免使用有问题的访问模式(即:多个编写器)>设计了文件锁定来防止访问。

此外,更新了将文件锁定
操作将errno设置为ENOSYS 时发出的错误消息(通常在
禁用文件锁定时),以
更好地描述问题和可能的解决方法。

(DER,2016/10/26,HDFFV-9918)