Python 阅读 .nc 文件

Reading .nc files by Python

我想通过 netCDF4(使用 conda)读取 .nc 文件,但我的文件看起来 像这样:something.3520_nc

  1. 这怎么办,还是.nc文件吧?我应该重命名它吗?或者在我下载它之后,将它保存在某个特殊的地方很重要吗?

  2. 任何人都可以告诉我如何开始该代码吗?我找到了一些关于这个问题的页面,但它对我不起作用。我有 Windows 10,conda 使用 my_root 环境,我有 netCDF4 包。

我试着写:

from netCDF4 import Dataset
import numpy as np

f = Dataset('test.nc')

我被建议使用而不是 numpy pylab,但我没有那个包,我不知道如何安装它。我最纠结的是第三行,因为我访问过的每个页面都写得不同。

我的问题可能很复杂,我承认我对 Python 有点经验。

如果你去看看documentation for your package, you will find a useful page here

所以你找到了

静态方法

def __init__( self, filename, mode="r", clobber=True, diskless=False, persist=False, keepweakref=False, format='NETCDF4') 数据集构造器。

它接受这些参数。我只把重要的留在这里。去阅读剩下的页面

文件名: 保存数据集的 netCDF 文件的名称。也可以是 python 3 pathlib 实例或 OpenDAP 数据集的 URL。

格式:基础文件格式('NETCDF4'、'NETCDF4_CLASSIC'、'NETCDF3_CLASSIC'、'NETCDF3_64BIT_OFFSET'或[=57之一=]。仅当 mode = 'w' 时相关(如果 mode = 'r','a' 或 'r+' 文件格式被自动检测)。默认 'NETCDF4',表示数据存储在 HDF5 文件中,使用 netCDF 4 API 功能。设置 format='NETCDF4_CLASSIC' 将创建一个 HDF5 文件,仅使用 netCDF 3 兼容 API 功能。netCDF 3 客户端必须重新编译并链接到 netCDF 4 库以读取 NETCDF4_CLASSIC 格式的文件。'NETCDF3_CLASSIC' 是经典的 netCDF 3 文件格式,不能处理 2+ Gb 文件。'NETCDF3_64BIT_OFFSET' 是 64- netCDF 3 文件格式的位偏移版本,它完全支持 2+ GB 文件,但仅与针对 netCDF 3.6.0 或更高版本链接的客户端兼容。'NETCDF3_64BIT_DATA' 是 netCDF 3 的 64 位数据版本文件格式,支持 64 位维度大小以及无符号和 64 位整数数据类型,但仅与链接到 netCDF 4.4.0 或更高版本的客户端兼容。

所以,这是什么意思。

  1. 您需要确定您使用的格式。如果你使用 NETCDF4 那么你可以忽略它,但如果不是你需要指定你的格式。

  2. 您需要确保您传递的文件路径有效。为此,请通过在与现有代码相同的目录中创建一个文件来尝试此测试,希望您的数据

test_file.py

import os

# this gets your current working directory, that is from the perspective of the module that you are running.
where_am_i = os.getcwd()

print(where_am_i)


my_file = "something.3520_nc"

if os.path.exists(my_file):
    print("Yep, I can read that file!")
else:
    print("Nope, the path doesn't reach your file. Go research filepath in python")

my_new_path = os.path.join('/the/absolute/path/to/file', my_file)

if os.path.exists(my_new_path):
    print("Yep, I can read that file!")
else:
    print("Nope, the path doesn't reach your file. Go research filepath in python")