【问题标题】:python xarray open_dataset unable to read the second, third, or more nc filepython xarray open_dataset 无法读取第二个、第三个或更多 nc 文件
【发布时间】:2020-05-04 04:33:04
【问题描述】:

我尝试通过 xarray 读取不同的 NetCDF 文件,但它只读取第一个文件。而第二个、第三个和更多 NetCDF 文件作为第一个文件被读取,没有任何错误。有谁知道如何解决这个问题?

### read files

## VI
VI_terra = xr.open_dataset(data_vi+"MOD13A1.006_500m_aid0001.nc")
VI_aqua = xr.open_dataset(data_vi+"MYD13A1.006_500m_aid0001.nc")

## LAI
LAI = xr.open_dataset(data_lai+"MCD15A2H.006_500m_aid0001.nc")

## ET
ET_terra = xr.open_dataset(data_et+"MOD16A2GF.006_500m_aid0001.nc")
ET_aqua = xr.open_dataset(data_et+"MYD16A2GF.006_500m_aid0001.nc")

## Surface temperature
Tsurf_terra = xr.open_dataset(data_tsurf+"MOD11A2.006_1km_aid0001.nc")
Tsurf_aqua = xr.open_dataset(data_tsurf+"MYD11A2.006_1km_aid0001.nc")

但是 LAI 被误读为 VI_terra:

当我使用 ncdump 检查 LAI 时,文件本身没有问题(不同于 VI):

【问题讨论】:

  • 只是猜测,但您可以尝试将cache=False 添加到open_dataset() 吗?
  • 谢谢,巴特。我重新启动内核并尝试将cache=Fasle 添加到所有open_dataset(),但没有任何变化。它仍然只返回所有以下数据集的第一个读数 (VI_terra)。
  • 如果你用NetCDF4阅读它们会发生什么?这会导致同样的问题吗?
  • 还是一样。我读为VI_terra = netCDF4.Dataset(data_vi+"MOD13A1.006_500m_aid0001.nc", "r")LAI = netCDF4.Dataset(data_lai+"MCD15A2H.006_500m_aid0001.nc", "r")。然后 LAI 仍然返回给我 VI_terra 的数据。
  • 感谢您试用,巴特。我不确定我的笔记本电脑发生了什么,可能某些部分设置错误。我将尝试在我的笔记本电脑上一一进行,或者让其他计算机暂时运行我的代码。如果我发现有什么问题,会在这里更新。再次感谢您的帮助!

标签: netcdf python-xarray


【解决方案1】:

使用xr.open_dataset,.nc 文件在读取后保持打开状态。

最简单的解决方案是使用xr.load_dataset,它会在读取后自动关闭.nc文件。

如果您需要坚持使用xr.open_dataset,那么您可以将其放在with 语句中,或者在完成后调用.close()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2017-03-11
    • 2023-03-20
    相关资源
    最近更新 更多