#!/usr/bin/python3 import sys if len(sys.argv) != 3: print("Usage: %s baseline.csv result.csv" % sys.argv[0], file=sys.stderr) exit(1) with open(sys.argv[1]) as baseline, open(sys.argv[2]) as result: contentB = baseline.read().splitlines() contentR = result .read().splitlines() headerB = contentB[0].split(',') headerR = contentR[0].split(',') valuesB = [float(v) for v in contentB[1].split(',')] valuesR = [float(v) for v in contentR[1].split(',')] dataB = {label: value for label, value in zip(headerB, valuesB)} dataR = {label: value for label, value in zip(headerR, valuesR)} if set(dataB) - set(dataR) or set(dataR) - set(dataB): print("Error: baseline and result differ in number of values", file=sys.stderr) exit(2) out = {label : "{0:.3f}".format(num / dataB[label]) for label, num in dataR.items()} print(','.join( out.keys() )) print(','.join( out.values() ))