# -*- coding: utf-8 -*- # 3.0 # import os from glob import glob home = os.path.join(os.sep, 'Users', 'cbcoasis', 'Documents', 'sodar') ncdir = os.path.join(home, 'ncs') ncext = 'nc' ncs = os.path.join(ncdir, '*' + os.extsep + ncext) ncs = glob(ncs) ncs = [os.path.basename(nc) for nc in ncs] ncs.sort() # from __future__ import division from scipy.io import netcdf import re pattern = re.compile(r'(\d{4}_\d{2}[A-Za-z]*)') notnan = {} noterror = {} for nc in ncs: ncfile = netcdf.netcdf_file(os.path.join(ncdir, nc)) try: key = pattern.search(nc).groups()[0] notnan[key] = \ ['{:.2f}%'.format((1 - (len(where(isnan(level))[0]) / len(level))) * 100) for level in ncfile.variables['u'].data.transpose()] noterror[key] = \ ['{:.2f}%'.format((1 - (len([error for error in level if error != 0]) / len(level))) * 100) for level in ncfile.variables['error'].data.transpose()] finally: ncfile.close() # for key in notnan: if len(notnan[key]) < 39: notnan[key].insert(0, 'N/A') notnan[key].append('N/A') noterror[key].insert(0, 'N/A') noterror[key].append('N/A') elif len(notnan[key]) == 39: pass else: notnan[key] = notnan[key][:39] noterror[key] = noterror[key][:39] # keys = notnan.keys() keys.sort() notnan_sheet = [{key:notnan[key][pct] for key in keys} for pct in range(0,39)] noterror_sheet = [{key:noterror[key][pct] for key in keys} for pct in range(0,39)] # import csv def make_sheet(name,sheet): handle = open(os.path.join(home, name), 'wb') writer = csv.DictWriter(handle, keys) writer.writeheader() writer.writerows(sheet) handle.close() make_sheet('notnan.csv', notnan_sheet) make_sheet('noterror.csv', noterror_sheet)