아래 스크립트를 사용하여 HDF5 파일에 데이터를 쓰려고합니다.HDF5 파일에 데이터 쓰기
코드를 실행중인 터미널 창에서 올바른 출력이 제공되고 출력 HDF5 파일이 생성되지만 출력 파일의 테이블에는 데이터가 생성되지 않습니다.
힌트가 있습니까?
import tables
import datetime
import time
import csv
from tables import openFile, IsDescription, Float64Col, Int16Col
from scipy import array
import numpy as np
import os
#
output_filename='events_per_hour_output.h5'
#
if __name__ == '__main__':
# Read data from file
input_file='data_s20002_20121101_20121105.h5'
#Find station ID, start date and stop date from 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 ''
with tables.openFile(str(input_file), 'r') as datafile:
data = [(x['timestamp'], x['nanoseconds'], x['ext_timestamp'], x['pulseheights']) for
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
#
with openFile(output_filename, 'w') as 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
#
for hour_step in range(int(start_unix_time),int(stop_unix_time),step_length):
dummy_01['step']=1
dummy_01.append
result = []
for row in data:
if (hour_step <= row[0]) and (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."
이 다른 질문의 중복이 아닌 경우 [파이썬 - HDF5에 데이터를 쓰는 문제] (http://stackoverflow.com/questions/16639813/python-problems- writing-data-to-hdf5)를 닫았다면, 어떻게 설명했는지 더 잘 설명해야했습니다. –