import csv import os from datetime import datetime from structures.measurement import CurrentMeasurement class CSVFile: lastMeas = [None] * 16 path = "logs" def __init__(self) -> None: if not os.path.exists(self.path): os.mkdir(self.path) filename = os.path.join(self.path, F"current_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.csv") self.file = open(filename, "a", newline='') self.writer = csv.writer(self.file, delimiter=' ') def write(self, values: list): meas: CurrentMeasurement for i, meas in enumerate(values): prev : CurrentMeasurement = self.lastMeas[meas.channel] if prev == None: self.writer.writerow([meas.timestamp, meas.source, meas.channel, meas.current]) meas.saved = True elif prev.current != meas.current: if not prev.saved: self.writer.writerow([prev.timestamp, prev.source, prev.channel, prev.current]) self.writer.writerow([meas.timestamp, meas.source, meas.channel, meas.current]) meas.saved = True self.lastMeas[meas.channel] = meas self.file.flush()