import sys import csv import math if len(sys.argv) < 3: sys.exit('Use it like: python verify.py reference.csv generated.csv [tol]') TOL = float(sys.argv[3]) if len(sys.argv) > 3 else 1 DIFF_COL_RATIO_THRESHOLD = 0.025 with open(sys.argv[1], newline='') as f: ref = list(csv.reader(f)) with open(sys.argv[2], newline='') as f: gen = list(csv.reader(f)) if len(ref) != len(gen): sys.exit(f'row count differs: ref={len(ref)} got={len(gen)}') header = ref[0] diff_col_count = 0 for i in range(len(ref)): if len(ref[i]) != len(gen[i]): sys.exit(f'line {i+1}: column count differs') for j in range(len(ref[i])): a = ref[i][j].strip() b = gen[i][j].strip() if a == b: continue if TOL > 0: try: if math.isclose(float(a), float(b), abs_tol=TOL): continue else: diff_col_count += 1 except ValueError: pass if diff_col_count / len(ref) > DIFF_COL_RATIO_THRESHOLD: sys.exit(f'Error Threshold Exceeded!')