ich habe folgendes Problem:
Mein Programm soll alle 5 Sekunden einen Feinstaubwert in eine .csv Datei schreiben. 1 Tag entspricht hierbei einer .csv Datei.
Jetzt soll es aber immer, wenn es für einen neuen Tag eine .csv Datei erstellt, in die ersten beiden Zeilen die "Beschriftung" einfügen.
Jedoch weiß ich nicht wie ich das anstellen soll. Werte abspeichern und neue Datei erstellen funktioniert ohne Probleme nur dort bin ich eben ratlos.
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import serial, time, struct, csv
from datetime import datetime as DateTime
ser = serial.Serial('/dev/feinstaub', 9600)
byte = "\x00"
OUTPUT_FILENAME = "/home/pi/Documents/Feinstaubdatentest/Feinstaubdaten{:%Y%m%d}.csv"
Name = ["Feinstaubsensor"]
Beschriftung = ["Datum","Uhrzeit","PM2.5","PM10"]
now = DateTime.now().strftime("%Y-%m-%d;%H:%M:%S")
Datum, Uhrzeit = now.split(";")
with open(OUTPUT_FILENAME.format(DateTime.now()), 'a') as csvfile:
output = csv.writer(csvfile, delimiter=';', escapechar=' ', quoting=csv.QUOTE_NONE)
output.writerow(Name)
output.writerow(Beschriftung)
while True:
lastbyte = byte
byte = ser.read(size=1)
if lastbyte == "\xAA" and byte == "\xC0":
sentence = ser.read(size=9)
readings = struct.unpack('<HHxxBBB',sentence)
pm_25 = readings[0]/10.0
pm_10 = readings[1]/10.0
with open(OUTPUT_FILENAME.format(DateTime.now()), 'a') as csvfile:
output = csv.writer(csvfile, delimiter=';', escapechar=' ', quoting=csv.QUOTE_NONE)
output.writerow([Datum, Uhrzeit, pm_25, pm_10])
time.sleep(5)