#! /usr/bin/env python import csv from datetime import datetime def calculate_diff(input_file, output_file): last_values = {} output_rows = [] with open(input_file, 'r') as infile: reader = csv.reader(infile) for row in reader: timestamp_str, metric, value_str = row timestamp = datetime.strptime(timestamp_str, '%Y-%m-%d %H:%M:%S.%f') value = float(value_str) output_rows.append(row) if metric in last_values: last_timestamp, last_value = last_values[metric] time_diff = (timestamp - last_timestamp).total_seconds() if time_diff > 0: value_diff = value - last_value if metric in ["Azimuth", "Elev"]: value_diff = (value_diff + 90) % 180 - 90 value_diff = value_diff / time_diff output_rows.append([timestamp_str, f"{metric}_diff", f"{value_diff:.6f}"]) last_values[metric] = (timestamp, value) with open(output_file, 'w', newline='') as outfile: writer = csv.writer(outfile) writer.writerows(output_rows) if __name__ == "__main__": import sys if len(sys.argv) != 3 and len(sys.argv) != 2: print("Usage: python process_log.py ") sys.exit(1) input_file = sys.argv[1] if sys.argv == 3: output_file = sys.argv[2] else: name, extension = input_file.rsplit('.', 1) # Add "_diff" to the name and then add the extension back output_file = f"{name}_diff.{extension}" print("Generate new diff file :"+str(output_file)) calculate_diff(input_file, output_file)