1234567891011121314151617181920212223242526272829303132 |
- 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()
|