für meinen Datenlogger habe ich ein Programm geschrieben, welches die Daten aus einer Queue in eine CSV-Datei auf einem USB-Stick schreibt.
Nachdem ich nun das ganze etwas ausprobiere fällt mir auf, dass die Dateien erst wirklich auf dem Stick vorhanden sind, wenn ich nach dem Schreibvorgang bzw. wenn die Aufnahme beendet ist, über den Dateiexplorer die Datei öffne (mittels LibreOffice Calc) und wieder schließe.
Danach kann ich den USB aushängen, wieder einstecken und die Datei ist nach wie vor vorhanden. Auch wird sie dann auf meinem Windows-PC dargestellt inklusive Inhalt.
Wenn ich jedoch, nachdem die Aufnahme beendet ist, die Datei nicht öffne und einfach den USB aushänge (also sicher entferne) dann wird die Datei auf meinem Win-Pc entweder gar nicht dargestellt, oder sie hat keinerlei Inhalt.
In meinem Programm hab ich jedoch stets darauf geachtet die datei auch wieder zu schließen (datei.close( ))
Hat jemand eine Idee, woran das liegen kann? Eventuell am USB-Stick? Ich hab schon mehrere ausprobiert. Alle sind mit FAT32 formatiert..
Code: Alles auswählen
def writer_run():
self.queue_daten_sensoren = queue.Queue(1)
self.datei_pfad = xxxxx
self.datei_name = "Filename"
self.datei = open(self.datei_pfad + self.datei_name, "w", newline = ' ', encoding = 'utf-8')
writer = csv.writer(self.datei, dialect='excel', delimiter=';')
writer.writerow(["Datum", "Zeit", "Wert"])
while not self.stop_aufnahme.isSet():
if self.queue_daten_sensoren.full is True:
print("Queue ist voll und wird entleert")
while self.queue_daten_sensoren.empty() is False:
writer.writerow(self.queue_daten_sensoren.get())
self.datei.flush()
self.datei_size = os.path.getsize(self.datei_pfad + self.datei_name)
if self.datei_size >= 5000:
self.datei.close()
return self.writer_run()
else:
print("Queue wird zwangsentleert")
while self.queue_daten_sensoren.empty() is False:
writer.writerow(self.queue_daten_sensoren.get())
self.datei.flush()
self.datei.close()
Mir ist aufgefallen, dass es an der Aufnahmezeit liegt. Ich habe für die Testversuche immer nur 10 Sekunden aufgenommen. Nachdem ich den USB-Stick sauber ausgeworfen hatte wurde keine mir auf dem Win-Rechner keine Dateien angezeigt. Sobald ich etwas länger aufgenommen hatte werden die Daten auch ganz normal auf dem Windows-PC dargestellt.
Also folgende Fälle sind zu betrachten:
- kurze Aufnahmen ca.10s -> Öffne USB-Stick auf dem RPI -> Datei vorhanden - > Öffnen der Datei -> Inhalt vorhanden -> USB sicher entfernen > Öffne USB-Stick auf dem Win-Rechner -> Datei vorhanden, jedoch kein Inhalt!
- kurze Aufnahmen ca. 10s -> Ohne USB-Sticks auf dem RPI -> Datei vorhanden, aber ohne zu öffnen -> USB Stick sicher entfernen -> Öffne USB-Stick auf dem Win-Rechner -> keine Datei vorhanden! -> anschließend wieder USB-Stick in den RPI -> Öffnen USB-Stick auf dem RPI -> keine Datei vorhanden?
???