import xml.etree.ElementTree as ET import os, ConfigParser config = ConfigParser.ConfigParser() config.read('config/logging_service.cfg') logfilepath = config.get('Paths', 'UnifiedLogPath') # read in the incident script in XML format tree = ET.parse(logfilepath + 'incident_script_test.xml') # root is TMC_SCRIPT tag root = tree.getroot() # entries contain all of the entry of cad incident from incident script entries = "" # create a new file for the combined entry from incident script and unifiedlog out_file = open(logfilepath + "caddetails.csv", "w") # read from the unifiedlog unified_log = open(logfilepath + "unifiedlog.csv", "r") # loop through tags under TMC_SCRIPT for script_event in root: # if found tag SCRIPT_EVENT if script_event.tag == 'SCRIPT_EVENT': entry_str = "" # loop through tags within SCRIPT_EVENT tags for info_type in script_event: # Add the time index field to entry string if info_type.tag == 'TIME_INDEX': entry_str += info_type.text + "," # Get the incident number to entry string if info_type.tag == "INCIDENT": incident_num = info_type.attrib["LogNum"] entry_str += " CAD Log, Incident #" + incident_num # Get the cad data info if info_type.tag == 'CAD_DATA': # Loop through all tags under CAD_DATA for event in info_type: # Look for CAD_INCIDENT_EVENT if event.tag == 'CAD_INCIDENT_EVENT': # set flag to check if DETAIL field exist detail = False for info in event: # Add the incident detail to entry string if info.tag == "DETAIL": # replace commas with whitespace text = info.text.replace(",", " ") # if it's not the first DETAIL field, # append to the end without "Detail" text if detail: entry_str += "; " + text else: entry_str += ", Detail: " + text detail = True # if there's detail field # add it to the entries if detail: entries += entry_str + "\n" # write all the entries from incident_sript.xml to the output file out_file.write(entries) out_file = open(logfilepath + "caddetails.csv", "a") # read in unifiedlog.csv and append to the output file line = unified_log.readline() while line: out_file.write("0"+line) line = unified_log.readline() out_file.close() # run the unix command line to sorting the file os.system("sort -o " + logfilepath + "caddetails.csv " \ + logfilepath + "caddetails.csv")