打开netcdf文件时出现此错误。 代码之前正在运行。 如何解决此问题?
追踪(最近一次呼叫最后一次):
文件"",第1行,in ...
文件" file.py",第71行,在gather_vgt中 return xr.open_dataset(filename)
File" /.../ lib / python3.6 / site-packages / xarray / backends / api.py",line 286,在open_dataset中 自动关闭=自动关闭)
文件" /.../ lib / python3.6 / site-packages / xarray / backends / netCDF4_.py", 第275行,公开 ds = opener()
文件" /.../ lib / python3.6 / site-packages / xarray / backends / netCDF4_.py", 第199行,在_open_netcdf4_group中 ds = nc4.Dataset(filename,mode = mode,** kwargs)
文件" netCDF4 / _netCDF4.pyx",第2015行,in netCDF4._netCDF4.Dataset。的初始化
文件" netCDF4 / _netCDF4.pyx",第1636行, netCDF4._netCDF4._ensure_nc_success
OSError:[Errno -101] NetCDF:HDF错误:b' file.nc'
当我尝试用h5py打开相同的netcdf文件时,我收到此错误:
OSError:无法打开文件(在此文件上禁用文件锁定 系统(使用HDF5_USE_FILE_LOCKING环境变量来覆盖), errno = 38,错误消息=' ...')
答案 0 :(得分:4)
你必须处于这种情况:
您的HDF5库已更新(1.10.1)(netcdf在引擎盖下使用HDF5)
您的文件系统不支持HDF5库使用的文件锁定。
要阅读您的hdf5或netcdf文件,您需要设置此environment variable:
HDF5_USE_FILE_LOCKING=FALSE
对于参考文献,这是在HDF5 version 1.10.1,
中引入的添加了禁用SWMR文件锁定方案的机制。
HDF5 1.10.0中使用的文件锁定调用(包括patch1)
当底层文件系统不支持文件时,它将失败 锁定或已禁用锁定的位置。禁用所有文件
锁定操作,一个名为
的环境变量 HDF5_USE_FILE_LOCKING可以设置为五个字符的字符串
' FALSE&#39 ;.这并没有从根本上改变HDF5库 操作(除了初始文件打开/创建,SWMR是无锁的),
但是用户必须更加小心打开文件 避免有问题的访问模式(即:多个编写者)>文件锁定被设计为防止。此外,文件锁定时发出的错误消息 操作将errno设置为ENOSYS(典型的文件锁定时间为 已更新,以描述问题和潜力 分辨率更好。
(DER,2016/10/26,HDFFV-9918)
答案 1 :(得分:1)
对于我来说,@ Florian建议的解决方案不起作用。我找到了另一种解决方案,建议导入h5py
和netCDF4
的顺序很重要(请参阅here)。
事实上,以下对我有用:
from netCDF4 import Dataset
import h5py
如订单所述,切换订单会导致错误。