Text in Datei vortlaufend schreiben

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
hannes1112
User
Beiträge: 1
Registriert: Dienstag 26. November 2019, 12:07

Ich brauche das wenn das Programm ausgeführt wird ein Timestamp gesetzt wird in einer Text Datei dabei darf der vorherige Inhalt sich jedoch nicht wiederholen, derzeit ist es so das, wenn ich es aufrühre der gesamte Text + gesamte Text mit aktuellen Inhalt geschrieben wird also doppelt. Wie kann, ich es abändern das immer nur der eine Eintrag zu den bereits vorhandenen dazukommt?

Mein Code:

Code: Alles auswählen

import sys
from datetime import datetime
now = datetime.now()

summery = now.strftime("%Y:%m:%d:%H:%M:%S")
i = 1

fobj_in = open("Zeiten.txt")
fobj_out = open("Zeiten.txt","a")

for line in fobj_in:
    
    print(line.rstrip()) #gebe datei aus  in Console
    fobj_out.write(str(i) + ":" + summery + "\n")
    i = i + 1
	
fobj_in.close()
fobj_out.close()
Istwert:

Code: Alles auswählen

1:2019:11:26:12:10:19
2:2019:11:26:12:10:19
1:2019:11:26:12:10:22
2:2019:11:26:12:10:22
3:2019:11:26:12:10:22
4:2019:11:26:12:10:22
sollwert:

Code: Alles auswählen

1:2019:11:26:12:10:22
2:2019:11:26:12:10:22
3:2019:11:26:12:10:22
4:2019:11:26:12:10:22
Danke im vorraus
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Ich verstehe nicht, was du erreichen möchtest.
Im Augenblick öffnest du eine Datei zum lesen und gleichzeitig zum Schreiben (append / anhängen). Dann liest du Zeile für Zeile und schreibst die Zeilen hinten an die Datei. Dann ist natürlich alles 2 Mal da.

Führ mal etwas weiter aus, was genau dein Problem ist. Ist das eine Logdatei? Möchtest du die nur um die Timestamps "erweitern"?
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ist ein komisches Datumsformat, dass Du alle Zahlen per : trennst. Warum willst Du das so haben?
Dateien sollte man nicht gleichzeitig lesen und verändern.
Strings stückelt man nicht mit + zusammen, sondern benutzt Stringformatierung, da kann man die Datumsformatierung auch gleich einbauen.
Wenn man zusätzlich zu einer List-Iteration in einer for-Schleife auch einen Zähler braucht, nimmt man enumerate, statt händisch i zu zählen.


Im Moment schreibst Du für jede Zeile in Deiner Input-Datei eine neu Zeile hinten dran.
Dein Ziel verstehe ich aber auch nicht: Warum willst Du das Datum vier mal in der Datei haben? Woher kommt die 4?
Antworten