einzelnes Element in bestehende csv Datei speichern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bubi-Bandit
User
Beiträge: 2
Registriert: Donnerstag 25. Dezember 2014, 21:56

Hallo,
Ich erstelle mir eine Steuerung zur Gartenbewässerung.
Dazu habe ich mehrere Parameter-Dateien (csv Dateien) erstellt in denen ich div. Parameter abgelegt habe (z. B. zu welcher Uhrzeit die Bewässerung beginnen soll, wann sie endet usw).

Die Parameter-Dateien habe ich zuvor mit einem Text-Editor erstellt. Das Einlesen der Dateien und der Zugriff auf jedes der einzelnen Elemente in der Datei klappt super und das Programm läuft auch genauso wie ich es mir vorgestellt habe.

Jetzt bin ich aber auf die Idee gekommen, das ich die Parameter in den Dateien zur Laufzeit verändern möchte und die geänderten Parameter anstelle der ursprünglichen in die csv-Datei speichern möchte.
:lol:
Und genau da, beim Speichern der Parameter (eines einzelnen Parameters in einer bestehenden csv-Datei) komme ich nicht weiter.
Bisher habe ich nur gefunden, das ich den kompletten Inhalt der Parameter-Datei neu erstellen muss.

Ich hoffe ihr könnt mir weiterhelfen und mir einen Tipp geben wie ich ein bekanntes Element innerhalb einer csv-Datei verändern kann.

Ich weis nicht ob es Sinn macht meinen Code hier zu veröffentlichen, denn in Bezug auf das Speichern der Daten in der csv-Datei habe ich noch nichts hinbekommen.
Entweder war die komplette Parameter-Datei anschließend leer oder ich habe einen weiteren Datensatz angehängt, was beides nicht mein Ziel ist.

Weiterhin ein frohes Weihnachtsfest

Gruß
Frank
BlackJack

@Bubi-Bandit: Es läuft letztendlich auf das was Du gefunden hast hinaus: Komplett neu schreiben der Datei. Das ist letztendlich bei allen Formaten die als Textdateien gespeichert sind der Fall. Wenn Du wahlfrei Werte ändern können möchtest, könntest Du eine Datenbank verwenden. SQLite zum Beispiel. Dafür ist ein Modul in der Standardbibliothek enthalten.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@Bubi-Bandit
csv-Dateien sind Textdateien. Und in Textdateien kannst Du nicht etwas hinzufügen oder ändern oder herausnehmen. Du musst die Textdatei lesen, das Gelesene ändern und diese Änderung dann wieder schreiben.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Bubi-Bandit
User
Beiträge: 2
Registriert: Donnerstag 25. Dezember 2014, 21:56

Ok,
Danke für die schnellen Antworten.

Dann bin ich beruhigt, das meine eigene Recherce zum "richtigen" Ergebnis führte, das man die komplette Datei neu beschreiben muss.

Im Grunde auch nicht weiter ein Problem, ich dachte nur das es eleganter gehen würde.

Gruß und vielen noch mal

Frank
BlackJack

@Bubi-Bandit: Als Hinweis vielleicht noch das es robuster ist die neue Datei erst in eine temporäre Datei mit einem einzigartigen Namen zu schreiben und dann am Ende diese Datei zur alten Datei umzubenennen.  Am besten im gleichen Verzeichnis. Damit verhindert man das zwei Prozesse die Datei gleichzeitig beschreiben und sie dadurch ”kaputt” gehen kann. Benannte temporäre Dateien kann mit Hilfe des `tempfile`-Moduls aus der Standardbibliothek erstellen.
Benutzeravatar
Humbalan
User
Beiträge: 59
Registriert: Mittwoch 2. September 2009, 15:11

Hallo,

es gibt einen Modul csv von python, das kann Dir einiges abnehmen. Schau mal rein: https://docs.python.org/2/library/csv.html

Ich persönlich bin eher ein Fan von Json. Hat eine dict-ähnliche Syntax und auch hier gibt es einen Python-Parser frei Haus: https://docs.python.org/2/library/json.html. Vielleicht gefällt es Dir ja. Ich finde es weitaus übersichtlicher, v. a. dann, wenn man "händisch" Änderungen machen möchte.

Beste Grüße
Humbalan
Antworten