1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #!/usr/bin/env python import xlrd from zipfile import zipfile datafile = "2013_ERCOT_Hourly_Load_Data.xls" def open_zip(datafile): with ZipFile( '{0}.zip' . format (datafile), 'r' ) as myzip: myzip.extractall() def parse_file(datafile): workbook = xlrd.open_workbook(datafile) sheet = workbook.sheet_by_index( 0 ) data = [[sheet.cell_value(r, col) for col in range (sheet.ncols)] for r in range (sheet.nrows)] cv = sheet.col_value( 1 , start_rowx = 1 , end_rowx = None ) maxval = max (cv) minval = min (cv) maxpos = cv.index(maxval) + 1 minpos = cv.index(minval) + 1 maxtime = sheet.cell_value(maxpos, 0 ) realtime = xlrd.xldate_as_tuple(maxtime, 0 ) mintime = sheet.cell_value(minpos, 0 ) realmintime = xlrd.xldate_as_tupple(mintime, 0 ) data = { 'maxtime' :( 0 , 0 , 0 , 0 , 0 , 0 ), 'maxvalue' : 0 , 'mintime' : ( 0 , 0 , 0 , 0 , 0 , 0 ), 'minvalue' : 0 , 'avgcoast' : 0 } return data def test(): open_zip(datafile) data = parse_file(datafile) assert data[ 'maxtime' ] = = ( 2013 , 8 , 13 , 17 , 0 , 0 ) assert round (data[ 'maxvalue' ], 10 ) = = round ( 18779.02551 , 10 ) |

