通过Python

时间:2017-05-25 19:32:42

标签: python numpy anaconda netcdf

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

  1. 如何处理这个问题,它还是.nc文件吗?我应该重命名吗?或者在我下载之后,将它保存在某个特殊的地方是否重要?

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

  3. 我试着写:

    from netCDF4 import Dataset
    import numpy as np
    
    f = Dataset('test.nc')
    

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

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

1 个答案:

答案 0 :(得分:2)

如果你去查看你的包的documentation,你会发现一个有用的页面here

所以你找到了

静态方法

def __init __(self,filename,mode =“r”,clobber = True,diskless = False,persist = False,keepweakref = False,format ='NETCDF4') 数据集构造函数。

它需要这些参数。我只把重要的东西放在这里。请阅读剩下的页面

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

格式:底层文件格式('NETCDF4','NETCDF4_CLASSIC','NETCDF3_CLASSIC','NETCDF3_64BIT_OFFSET'或'NETCDF3_64BIT_DATA'之一。仅在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'是netCDF 3文件格式的64位偏移版本,完全支持2 GB以上文件,但仅与netCDF 3.6.0或更高版本链接的客户端兼容.'NETCDF3_64BIT_DATA'是64位数据netCDF 3文件格式的版本,它支持64位维度大小加上无符号和64位int eger数据类型,但仅与netCDF版本4.4.0或更高版本链接的客户端兼容。

那么,这是什么意思。

  1. 您需要确定使用的格式。如果您使用NETCDF4,则可以忽略此项,但如果不是,则需要指定格式。

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

  3. <强> 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")