#!/usr/bin/python import argparse def get_args(): '''This function parses and returns arguments passed in''' parser = argparse.ArgumentParser() parser.add_argument( '-r','--runs',type=str,help='Run list',required=True,nargs="+") parser.add_argument( '-f','--infile',type=str,help='Scaler list file',required=True) parser.add_argument( '-o','--outfile',type=str,help='Output file',required=True) args = parser.parse_args() infilename = args.infile outfilename = args.outfile runlist = args.runs[0].split(",") return runlist, infilename, outfilename runlist, infilename, outfilename = get_args() print "\nScaler File Name: [ %s ]\n" % infilename print "\nOutput File Name: [ %s ]\n" % outfilename final_runlist = [] for r in runlist: minirunlist = r.split("-") nruns = len(minirunlist) if nruns == 1: #print "Run: [%s]" % r scaler_filename = "replay_coin_scalers_" + r + ".report" final_runlist.append(scaler_filename) else: startrun=int(minirunlist[0]) endrun=int(minirunlist[1]) while startrun <= endrun: #print "MiniRun: [%s]" % startrun scaler_filename = "replay_coin_scalers_" + str(startrun) + ".report" final_runlist.append(scaler_filename) startrun=startrun+1 #print final_runlist basic_name_array = ["Run Number"] scaler_name_array = [] with open(infilename) as fp: scaler_name_array = fp.read().splitlines() fp.close() of = open(outfilename,'w') scaler_name_array_run_number = basic_name_array+scaler_name_array mx = len(max(scaler_name_array_run_number)) print (" ".join(["{:<{mx}}".format(ele,mx=mx) for ele in scaler_name_array_run_number])) of.write(" ".join(["{:<{mx}}".format(ele,mx=mx) for ele in scaler_name_array_run_number])) of.write("\n") for runfile in final_runlist: with open(runfile) as fp: runfile_linelist = fp.read().splitlines() runnumbersplit = runfile.split("_") runnumbersplit2 = runnumbersplit[3].split(".") run_number_array=[] run_number_array.append(runnumbersplit2[0]) scaler_value_array=[] for line in runfile_linelist: parsed_line = line.split(":") for scaler in scaler_name_array: if parsed_line[0].rstrip(" ") == scaler: full_value = parsed_line[1].lstrip() numerical_value = full_value.split(" ") scaler_value_array.append(numerical_value[0]) scaler_value_array_run_number=run_number_array+scaler_value_array print (" ".join(["{:<{mx}}".format(ele,mx=mx) for ele in scaler_value_array_run_number])) of.write(" ".join(["{:<{mx}}".format(ele,mx=mx) for ele in scaler_value_array_run_number])) of.write("\n") fp.close() of.close()