"""BIG SUR MP3056A Radiometer Data Parse: Selects column integral lines from MP3056A level 2 data files and saves to ColInt_Obs.txt file in current directory. Assumes current directory is a folder of MP3000 data files. MP3056A file name format: 2015-02-08_00-00-05_lv2.csv Col Int variables are: Record, Date/Time, Record_Type, Int_Vapor_cm, Int_Liquid_mm, Cloud_Base_km Notes: need to process files for given day only and save to single output file named for current day. Make this a function and pass YYYY,MM,DD? Code to read and save other data fields from the lv2 file is currently commented out. Byron Blomquist, NOAA/ESRL/PSD3, Jan 2018 """ import os # open files for output # fMet = open('Met_Obs.txt', 'w') # fGPS = open('GPS_Obs.txt', 'w') fColInt = open('ColInt_Obs.txt', 'w') # fTKZ = open('T_K_Zen.txt', 'w') # fTKN = open('T_K_20N.txt', 'w') # fTKS = open('T_K_20S.txt', 'w') # fTKAvg = open('T_K_20Avg.txt', 'w') # fVapZ = open('Vap_Zen.txt', 'w') # fVapN = open('Vap_20N.txt', 'w') # fVapS = open('Vap_20S.txt', 'w') # fVapAvg = open('Vap_20Avg.txt', 'w') # fLiqZ = open('Liq_Zen.txt', 'w') # fLiqN = open('Liq_20N.txt', 'w') # fLiqS = open('Liq_20S.txt', 'w') # fLiqAvg = open('Liq_20Avg.txt', 'w') # fRHZ = open('RH_Zen.txt', 'w') # fRHN = open('RH_20N.txt', 'w') # fRHS = open('RH_20S.txt', 'w') # fRHAvg = open('RH_20Avg.txt', 'w') # Write a header line into each file # hdr = 'Record,Date_Time,Record_Type,Tamb_K,Rh_%,Pres_mb,Tir_K,Rain_V\r' # fMet.write(hdr) # # hdr = 'Record,Date_Time,Record_Type,GPS_Date_Time,Latitude,Longitude,' # hdr += 'Magnetic_Variation,Status,Quality,Number_Satellites,Altitude_m\r' # fGPS.write(hdr) # hdr = 'Record,Date_Time,Record_Type,Int_Vapor_cm,Int_Liquid_mm,Cloud_Base_km\r' # fColInt.write(hdr) # hdr = 'Record,Date_Time,Record_Type,LV2_Processor, 0_00_km, 0_05_km, 0_10_km, 0_15_km,' # hdr += '0_25_km, 0_30_km, 0_35_km, 0_40_km, 0_45_km, 0_50_km, 0_60_km, 0_70_km, 0_80_km,' # hdr += '0_90_km, 1_00_km, 1_10_km, 1_20_km, 1_30_km, 1_40_km, 1_50_km, 1_60_km, 1_70_km,' # hdr += '1_80_km, 1_90_km, 2_00_km, 2_25_km, 2_50_km, 2_75_km, 3_00_km, 3_25_km, 3_50_km,' # hdr += '3_75_km, 4_00_km, 4_25_km, 4_50_km, 4_75_km, 5_00_km, 5_25_km, 5_50_km, 5_75_km,' # hdr += '6_00_km, 6_25_km, 6_50_km, 6_75_km, 7_00_km, 7_25_km, 7_50_km, 7_75_km, 8_00_km,' # hdr += '8_25_km, 8_50_km, 8_75_km, 9_00_km, 9_25_km, 9_50_km, 9_75_km,10_00_km\r' # fTKZ.write(hdr) # fTKN.write(hdr) # fTKS.write(hdr) # fTKAvg.write(hdr) # fVapZ.write(hdr) # fVapN.write(hdr) # fVapS.write(hdr) # fVapAvg.write(hdr) # fLiqZ.write(hdr) # fLiqN.write(hdr) # fLiqS.write(hdr) # fLiqAvg.write(hdr) # fRHZ.write(hdr) # fRHN.write(hdr) # fRHS.write(hdr) # fRHAvg.write(hdr) # assume current directory contains level 2 csv files, # dump list of data file names into list variable files = [f for f in os.listdir('.') if f.endswith('lv2.csv')] # parse data files and save into txt files for file in files: print file fin = open(file) for line in fin: cleanLine = line.strip() if cleanLine.endswith(','): lineOut = cleanLine[0:-1] + '\r' else: lineOut = cleanLine + '\r' fields = cleanLine.split(',') if fields[2] == '301': fColInt.write(lineOut) # if fields[2] == '31': # fGPS.write(lineOut) # elif fields[2] == '201': # fMet.write(lineOut) # elif fields[2] == '301': # fColInt.write(lineOut) # elif fields[2] == '401' and fields[3] == 'Zenith': # fTKZ.write(lineOut) # elif fields[2] == '401' and fields[3] == 'Angle20(AZ-000)(N)': # fTKN.write(lineOut) # elif fields[2] == '401' and fields[3] == 'Angle20(AZ-000)(S)': # fTKS.write(lineOut) # elif fields[2] == '401' and fields[3] == 'Angle20(AZ-000)(A)': # fTKAvg.write(lineOut) # elif fields[2] == '402' and fields[3] == 'Zenith': # fVapZ.write(lineOut) # elif fields[2] == '402' and fields[3] == 'Angle20(AZ-000)(N)': # fVapN.write(lineOut) # elif fields[2] == '402' and fields[3] == 'Angle20(AZ-000)(S)': # fVapS.write(lineOut) # elif fields[2] == '402' and fields[3] == 'Angle20(AZ-000)(A)': # fVapAvg.write(lineOut) # elif fields[2] == '403' and fields[3] == 'Zenith': # fLiqZ.write(lineOut) # elif fields[2] == '403' and fields[3] == 'Angle20(AZ-000)(N)': # fLiqN.write(lineOut) # elif fields[2] == '403' and fields[3] == 'Angle20(AZ-000)(S)': # fLiqS.write(lineOut) # elif fields[2] == '403' and fields[3] == 'Angle20(AZ-000)(A)': # fLiqAvg.write(lineOut) # elif fields[2] == '404' and fields[3] == 'Zenith': # fRHZ.write(lineOut) # elif fields[2] == '404' and fields[3] == 'Angle20(AZ-000)(N)': # fRHN.write(lineOut) # elif fields[2] == '404' and fields[3] == 'Angle20(AZ-000)(S)': # fRHS.write(lineOut) # elif fields[2] == '404' and fields[3] == 'Angle20(AZ-000)(A)': # fRHAvg.write(lineOut) # fMet.close() # fGPS.close() fColInt.close() # fTKZ.close() # fTKN.close() # fTKS.close() # fTKAvg.close() # fVapZ.close() # fVapN.close() # fVapS.close() # fVapAvg.close() # fLiqZ.close() # fLiqN.close() # fLiqS.close() # fLiqAvg.close() # fRHZ.close() # fRHN.close() # fRHS.close() # fRHAvg.close() # end