Seite 1 von 1

Text in Datei speichern(nicht write to file)

Verfasst: Freitag 17. August 2018, 19:58
von yeet
Hallo,

ich habe ein Programm programmiert, das ständig (immer wieder) durchläuft. Dabei werden Wörter einer Variable in eine Datei (im Moment noch txt Datei) geschrieben und im nächsten Programmdurchlauf mit der Variable von Wörtern verglichen. Das sieht etwa so aus:

Code: Alles auswählen

a = True

while a == True:
    l = ("Test") 
    zw = open("test.txt")
    if zw.read() != l:
        zw.close()
	zw = open("test.txt", "w")
	zw.write(l)
	zw.close()        
    else:
	zw.close()
		
    l = l + "Test"
Allerdings scheint die Methode mit den Textdateien zu langsam zu sein und außerdem verbrauchen die Dateien unnötigen Speicherplatz. Gibt es noch eine andere Methode dieses Problem zu lösen?

MfG

Re: Text in Datei speichern(nicht write to file)

Verfasst: Freitag 17. August 2018, 20:16
von pixewakb
yeet hat geschrieben: Freitag 17. August 2018, 19:58ich habe ein Programm programmiert, das ständig (immer wieder) durchläuft. Dabei werden Wörter einer Variable in eine Datei (im Moment noch txt Datei) geschrieben und im nächsten Programmdurchlauf mit der Variable von Wörtern verglichen. Das sieht etwa so aus [...]
Du schreibst den Inhalt der Variable in eine Datei und lädst sie dann direkt wieder von dort? Warum hältst Du die Daten nicht im Speicher? Wenn ich richtig vermute, was du eigentlich machst, dann versuchst du zu prüfen, ob der Inhalt einer Variable sich geändert hat, falls ja, würde ich in so einem Fall die neue Variable in die Prüfvariable packen und dann dagegen prüfen, also wieder, bis sich der Inhalt der neuen Variable gegenüber der Prüfvariable geändert hat. Ist verständlich, was ich meine?

Arbeit mit Dateien sieht eigentlich heute so aus:

Code: Alles auswählen

data = "Test"

with open("test.txt", "w") as f:
    f.write(data)

Re: Text in Datei speichern(nicht write to file)

Verfasst: Freitag 17. August 2018, 20:31
von __blackjack__
@yeet: Der Vergleich von `a` mit `True` mach wenig Sinn, denn da kommt ja wieder nur `True` oder `False` heraus, also das was `a` ja bereits ist. Also ``while a:``. Da sich `a` aber nie ändert, kann man es auch weglassen und gleich ``while True:`` schreiben.

Re: Text in Datei speichern(nicht write to file)

Verfasst: Freitag 17. August 2018, 20:46
von yeet
pixewakb hat geschrieben: Freitag 17. August 2018, 20:16
yeet hat geschrieben: Freitag 17. August 2018, 19:58ich habe ein Programm programmiert, das ständig (immer wieder) durchläuft. Dabei werden Wörter einer Variable in eine Datei (im Moment noch txt Datei) geschrieben und im nächsten Programmdurchlauf mit der Variable von Wörtern verglichen. Das sieht etwa so aus [...]
Du schreibst den Inhalt der Variable in eine Datei und lädst sie dann direkt wieder von dort? Warum hältst Du die Daten nicht im Speicher? Wenn ich richtig vermute, was du eigentlich machst, dann versuchst du zu prüfen, ob der Inhalt einer Variable sich geändert hat, falls ja, würde ich in so einem Fall die neue Variable in die Prüfvariable packen und dann dagegen prüfen, also wieder, bis sich der Inhalt der neuen Variable gegenüber der Prüfvariable geändert hat. Ist verständlich, was ich meine?

Arbeit mit Dateien sieht eigentlich heute so aus:

Code: Alles auswählen

data = "Test"

with open("test.txt", "w") as f:
    f.write(data)
@pixewabk Ja, ich verstehe genau was du meinst. Aber das was ich dann in der Variable drin stehen habe, soll in jedem weiteren Durchlauf auch noch beestehen und ich muss die Variable ja am Anfang definieren und dann wird sie ja wieder überschrieben:

Code: Alles auswählen

while True:
    l = ("Test") 
    a = (" ")
    if a != l:
       print("TEST")
       a = l
    else:
        print("Bestanden")  
Mein Ziel ist es ja, dass das Programm einmal "TEST" ausgibt und danach immer "Bestanden", also dass ein Stand immer gespeichert wird und im nächsten Programmdurchlauf auch noch gleich ist, wenn du verstehst was ich meine.

Re: Text in Datei speichern(nicht write to file)

Verfasst: Freitag 17. August 2018, 21:03
von __blackjack__
@yeet: Beschreib doch mal welches Problem Du eigentlich lösen möchtest. Also nicht welche Lösung Du jetzt verwendest, sondern was warum gemacht werden soll.

Re: Text in Datei speichern(nicht write to file)

Verfasst: Samstag 18. August 2018, 10:59
von noisefloor
Hallo,
Allerdings scheint die Methode mit den Textdateien zu langsam zu sein
I/O auf der Festplatte ist immer langsam, egal wie. Abhilfe a) schneller Festplatte ;-) , b) asyncronen I/O verwenden, damit dein Hauptprogramm nicht durch I/O blockiert wird, c) das Problem anders lösen, wie oben bereits mehrfach erwähnt. c) ist hier denke aktuell denke ich die sinnvollste Lösung.

Gruß, noisefloor

Re: Text in Datei speichern(nicht write to file)

Verfasst: Samstag 18. August 2018, 11:09
von Sirius3
@noisefloor: schnell ist relativ. Das ständige Schreiben und Lesen findet ja komplett im Cache statt. Daher dürften a) und b) nicht wirklich viel Zeit einsparen. Ich bin auch für c).