file('bla.txt', 'w')

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
DanielTheNew
User
Beiträge: 13
Registriert: Donnerstag 26. Oktober 2006, 14:37

Hallo

Ich verwende in einem programmchen von mir folgenden code.

Code: Alles auswählen

	def saveConfig(self):
		print 'Schreibe...'
		f = file('bla.txt', 'w') 
		for i in liste:
			f.write(i)
		f.close()
Das Problem in diesem fall ist das ein neuer aufruf von saveConfig die neuen einträge unten anhängt.
Ich würded as file aber gerne neu schreiben.
Ich habe also mal help(file) gemacht und wenn ich das dort richtig verstehe sollte es auch überschrieben werden.

Nun meine frage. Muss ich das file vorher wirklich mit os.remove löschen oder stimmt etwas anderes an diesen paar zeilen code nicht?

Danke für eure antwort
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

DanielTheNew hat geschrieben:ein neuer aufruf von saveConfig die neuen einträge unten anhängt.
Hi Daniel!

1.) ``file("<filename>", "w")`` überschreibt die Datei. Das ist fix. Also musst du den Fehler woanders suchen. Vielleicht befüllst du deine Liste doppelt. Gib die Liste doch mal mit ``print`` aus, bevor du sie speicherst.

2.) Übergebe an deine Funktion alle Parameter, die die Funktion braucht. Ausgenommen, es handelt sich um eine Klassenmethode und die Werte sind in einer Klasse schön übersichtlich zusammengefasst.

Code: Alles auswählen

def save_config(config_list, filename = "configfile.txt"):
    f = file(filename, 'w') 
    for line in config_list:
	if not line.endswith("\n"):
	    line += "\n"
	f.write(line)
    f.close()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
DanielTheNew
User
Beiträge: 13
Registriert: Donnerstag 26. Oktober 2006, 14:37

gerold hat geschrieben:
DanielTheNew hat geschrieben:ein neuer aufruf von saveConfig die neuen einträge unten anhängt.
Hi Daniel!

1.) ``file("<filename>", "w")`` überschreibt die Datei. Das ist fix. Also musst du den Fehler woanders suchen. Vielleicht befüllst du deine Liste doppelt. Gib die Liste doch mal mit ``print`` aus, bevor du sie speicherst.

2.) Übergebe an deine Funktion alle Parameter, die die Funktion braucht. Ausgenommen, es handelt sich um eine Klassenmethode und die Werte sind in einer Klasse schön übersichtlich zusammengefasst.

Code: Alles auswählen

def save_config(config_list, filename = "configfile.txt"):
    f = file(filename, 'w') 
    for line in config_list:
	if not line.endswith("\n"):
	    line += "\n"
	f.write(line)
    f.close()
mfg
Gerold
:-)

Danke für deine Antwort dann werde ich den fehler wo anders suchen müssen.
Das hilft mir schon mal sehr weiter. Vielen DANK!!!!
Antworten