Seite 1 von 1
Liste aus txt-Datei lesen, ein Element ändern und speichern
Verfasst: Freitag 25. Juli 2014, 10:09
von SVblue
Hallo,
habe hier eine txt-Datei mit nur einer Zeile
Beispieldaten (Semikolon als Separator):
0;0000001;132;A4710781144;001;24.07.2014 08:23:04;11,2;9,9
Das Auslesen der Werte funktioniert soweit:
Code: Alles auswählen
data = open("Dateiname.txt", 'r').readlines()
inhalt = data[0].split(";")
Nun würde ich gern Element an Position 2 = Wert: 132 z.B. in Wert: 256 ändern und wieder in die Datei schreiben.
Wie kann man einzelnen Elemente ändern, sowohl in der ausgelesenen Liste und dann auch in der Datei???
Re: Liste aus txt-Datei lesen, ein Element ändern und speich
Verfasst: Freitag 25. Juli 2014, 10:16
von /me
SVblue hat geschrieben:Wie kann man einzelnen Elemente ändern, sowohl in der ausgelesenen Liste und dann auch in der Datei???
Elementzugriff kennst du eigentlich. Du hast ja auch schon mit
data[0] auf das erste Element von
data zugegriffen.
Das Element mit Index 2 bekommst du folglich mit
inhalt[2] und kannst dort einen neuen Wert zuweisen.
Jetzt brauchst du nur noch eine Methode um das
split(";") quasi umzukehren und die Liste wieder in einen mit Semikolons getrennten String zu verwandeln. Dafür bietet sich die
join-Methode eines Strings an.
Die Datei kannst du dann einfach komplett neu schreiben.
Re: Liste aus txt-Datei lesen, ein Element ändern und speich
Verfasst: Freitag 25. Juli 2014, 10:52
von SVblue
Das ist es!
Bist ein Engel, Danke.
Re: Liste aus txt-Datei lesen, ein Element ändern und speich
Verfasst: Freitag 25. Juli 2014, 13:09
von BlackJack
@SVblue: Fast, es sollte eher `writeline()` sein. `writelines()` erzeugt für jedes einzelne Zeichen/Byte einen eigenen `write()`-Aufruf auf der Datei, was sehr ineffizient ist. Und wenn Du sowieo nur an der ersten Zeile aus der Datei interessiert bist, und eventuell vorhandene weitere Zeilen beim schreiben gelöscht werden dürfen, dann würde man auch nicht `readlines()` verwenden, sondern zum Beispiel mit `next()` einfach die erste Zeile lesen. Sollten eventuelle Folgezeilen allerdings relevant sein, dann muss man alle Zeilen lesen, und danach dann auch *alle* wieder schreiben, und nicht nur die veränderte.