Probleme beim CSV-Datei erstellen in Python- Was mache ich falsch?
Hallo, bin Phython-Anfänger und möchte in meiner Anwendung Sensordaten, die in einer Schleife regelmäßig neu ausgelesen werden, in eine CSV-Datei schreiben.
Dazu habe ich folgenden Beispielcode gefunden:
import csv
writer = csv.writer(open("test_daten.csv", "a"))
writer.writerow(['Marke', 'Modell', 'Leistung'])
Wenn ich diesen Code so in einem Skript übernehme, wird zwar eine Datei erstellt, die aber leer ist.
In meiner Anwendung habe ich versucht, die erste Zeile vom Code (erstellen der Datei) VOR die Schleife zu stellen und am Ende der Schleife dann die Variablen mit writer.writerow([variable1,variable2...]) in die Datei zu schreiben. Mit der Option "a" wird ja sichergestellt, dass die Datei regelmäßig erweitert wird und das will ich ja auch.
Nun wird in dem Fall aber gar keine Datei erstellt, obwohl der Code identisch ist. Was mache ich falsch?
1 Antwort
Das liegt wohl daran, dass die geschriebenen Inhalte erstmal gebuffert werden und erst sobald der Buffer voll ist (oder das Dateihandle geschlossen wird) auch wirklich in die Datei geschrieben werden.
So sollte es funktionieren:
import csv
fh = open("test_daten.csv", "a")
writer = csv.writer(fh)
writer.writerow(['Marke', 'Modell', 'Leistung'])
fh.flush() #Den Inhalt des Buffers JETZT in die Datei schreiben
while(True):
#TODO: Sensordaten einlesen
writer.writerow(sensordaten)
fh.flush()
fh.close() #Das Dateihandle explizit schließen (und dabei den Inhalt des Buffers, sofern größer als 0, in die Datei schreiben)