python - Write data to HDF5 file -
i'm trying write data hdf5 file using script below.
the terminal window i'm running code in gives correct output, , output hdf5 file created, no data in tables of output file.
any hints?
import tables import datetime import time import csv tables import openfile, isdescription, float64col, int16col scipy import array import numpy np import os # output_filename='events_per_hour_output.h5' # if __name__ == '__main__': # read data file input_file='data_s20002_20121101_20121105.h5' #find station id, start date , stop date filename print "input_file: ",str(input_file) stationid=str(input_file[6:11]) print "stationid: ",stationid start_year=str(input_file[12:16]) print "start_year: ", start_year start_month=str(input_file[16:18]) print "start_month: ", start_month start_day=str(input_file[18:20]) print "start_day",start_day stop_year=str(input_file[21:25]) print "stop_year ",stop_year stop_month=str(input_file[25:27]) print "stop_month ",stop_month stop_day=str(input_file[27:29]) print "stop_day ",stop_day print '' tables.openfile(str(input_file), 'r') datafile: data = [(x['timestamp'], x['nanoseconds'], x['ext_timestamp'], x['pulseheights']) x in datafile.root.s20002.events] # class variable_01(isdescription): unix_timestamp = float64col() events = float64col() gmt = float64col() step = float64col() # # start_date=datetime.datetime(int(start_year),int(start_month),int(start_day)) print "start_date: ",start_date #start_date=time.gmtime(int(start_year),int(start_month),int(start_day)) stop_date=datetime.datetime(int(stop_year),int(stop_month),int(stop_day)) print "stop_date: ",stop_date print"start_date.timetuple(): ",start_date.timetuple() start_unix_time=time.mktime(start_date.timetuple()) #start_unix_time=time.gmtime(start_date.timetuple()) stop_unix_time=time.mktime(stop_date.timetuple()) step_length=3600# 3600 seconds = 1 hour total_length=0 # openfile(output_filename, 'w') data_splice: group_variable_01 = data_splice.creategroup("/", 'hisparc_vantage') table_variable_01 = data_splice.createtable(group_variable_01, 'table_01', variable_01) dummy_01 = table_variable_01.row # hour_step in range(int(start_unix_time),int(stop_unix_time),step_length): dummy_01['step']=1 dummy_01.append result = [] row in data: if (hour_step <= row[0]) , (row[0] < hour_step+step_length):# result.append(row) print "utc start time: ",time.strftime("%y-%m-%d %h:%m:%s", time.gmtime(hour_step)) print "len(result) : ", len(result) # # dummy_01['unix_timestamp'] = hour_step dummy_01['events']=len(result) print "dummy_01['events']=",dummy_01['events'] print "dummy_01['unix_timestamp'] =", dummy_01['unix_timestamp'] dummy_01.append() print '' table_variable_01.flush print "done."
you should take @ h5py. module provides easy functions read/write hdf5 files. if read data fields such images or rasters, there directly available numpy arrays.
Comments
Post a Comment