import glob all_files = glob.glob("data/*.NC") file = all_files[0] def get_value(c, s): [x] = [item.replace(s, '') for item in c if item.startswith(s)] or [0] return float(x) with open(file, 'r') as fp: lines = fp.readlines() # print(lines) prev_x = None prev_y = None prev_z = None result = [] for l in lines: data = l.strip().split(' ') if len(data) > 3 and data[1] in ['G01', 'G02', 'G03']: _, type, *args = data if type in ['G01']: parse_x = get_value(args, 'X') parse_y = get_value(args, 'Y') parse_z = get_value(args, 'Z') if not prev_x: prev_x = parse_x if not prev_y: prev_y = parse_y if not prev_z: prev_z = parse_z x = prev_x - parse_x y = prev_y - parse_y z = prev_z - parse_z prev_x = parse_x prev_y = parse_y prev_z = parse_z result.append(('line',x,y,z)) if type in ['G02', 'G03']: pass # print(args) with open(f"{file}.result", 'w') as fp: fp.write('\n'.join(','.join(str(i) for i in x) for x in result))