Skip to content

Instantly share code, notes, and snippets.

@lstagner
Last active May 25, 2016 22:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lstagner/8dc0ee6e01ee23ee0656c5637891887c to your computer and use it in GitHub Desktop.
Save lstagner/8dc0ee6e01ee23ee0656c5637891887c to your computer and use it in GitHub Desktop.
Reads a NetCDF 3 file and returns a dict with its variables
#The MIT License (MIT)
#Copyright (c) 2016 Luke Stagner
#Permission is hereby granted, free of charge, to any person obtaining a copy of this software
#and associated documentation files (the "Software"), to deal in the Software without restriction,
#including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
#and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
#subject to the following conditions:
#The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
#TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
#THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
#CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
#IN THE SOFTWARE
def read_ncdf(file,vars=[]):
""" Reads a NetCDF 3 file and returns a dict with its variables
Parameters
----------
file : string
The netCDF file to be read
vars : string list, optional
List of variables to be read from file
Returns
-------
d : A python dict containing the files variables
Examples
--------
>>> d=read_ncdf('test.cdf')
>>> d1=read_ncdf('test.cdf',vars=['var1'])
>>> d2=read_ncdf('test.cdf',vars=['var1','var2'])
"""
from scipy.io import netcdf
try:
f=netcdf.netcdf_file(file,'r',mmap=False)
except IOError:
print('Error: Cannot open file'+file)
return 0
if vars == []: vars=f.variables.keys()
d=dict((v,f.variables[v].data) for v in vars)
f.close()
return d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment