打开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,错误消息=‘.’)
发布于 2018-03-16 10:04:16
你一定处于这样的情况:
为了读取hdf5或netcdf文件,需要设置以下环境变量:
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)
发布于 2020-07-02 06:24:29
在我的例子中,@Florian建议的解决方案没有效果。我找到了另一种解决方案,这表明导入h5py和netCDF4的顺序很重要(参见这里)。
事实上,以下几点对我来说是可行的:
from netCDF4 import Dataset
import h5py如OP所述,切换顺序会导致错误。
https://stackoverflow.com/questions/49317927
复制相似问题