def generate_nc(parser_context): parser = XLSParser() with open(parser_context.filepath, 'r') as f: doc = f.read() info = parser.extract_worksheets(doc) nccl = info[parser_context.worksheet] #header_line = 3 #columns = nccl[header_line] #data_range = (4, 66) data_rows = nccl[parser_context.data_range[0]:parser_context.data_range[1]] print 'Generating',parser_context.output_file nc = Dataset(parser_context.output_file, 'w') nc.createDimension('time', len(data_rows)*12) nc.GDAL = "GDAL 1.9.2, released 2012/10/08" nc.history = "Created dynamically in IPython Notebook 2013-11-14" nc.title = nccl[0][0] nc.summary = nccl[1][0] nc.naming_authority = 'GLOS' nc.source = 'GLERL' nc.standard_name_vocabulary = "http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html" nc.project = 'GLOS' nc.Conventions = "CF-1.6" time = nc.createVariable('time', 'f8', ('time',)) time.standard_name = 'time' time.units = 'seconds since 1970-01-01' time.long_name = 'Time' time.axis = 'T' precip = nc.createVariable(parser_context.variable, 'f8', ('time',), fill_value=parser_context.fill_value) #precip.standard_name = 'precipitation_amount' precip.standard_name = parser_context.standard_name precip.units = parser_context.units for i,row in enumerate(data_rows): for j in xrange(12): the_date = datetime(row[0], j+1, 1) timestamp = calendar.timegm(the_date.utctimetuple()) time[i*12 + j] = timestamp try: value = float(row[j+1]) except ValueError: continue except TypeError: continue precip[i*12 + j] = value nc.close()