Seite 1 von 1

Schreiben einer Integer Liste in eine Textdatei

Verfasst: Montag 2. Februar 2015, 18:07
von nieselfriem
Hallo,

ich bin in Python 3 noch recht frisch und versuche eine Liste in eine Textdatei zu schreiben. Nun sollte das nicht so schwer sein. Aber so richtig komme ich dann dich nicht vorwärts:

Code: Alles auswählen

liste=[1,2,3,4,9]
f = open("text.txt","w")
for item in liste:
	f.write(str(item))
Die Textdatei wird angelegt jedoch nicht mit den Werten beschrieben.

Was mache ich falsch?

VG niesel

Re: Schreiben einer Integer Liste in eine Textdatei

Verfasst: Montag 2. Februar 2015, 18:10
von Sirius3
@nieselfriem: Du solltest die Datei auch wieder schließen, am besten mithilfe des with-Konstrukts.

Re: Schreiben einer Integer Liste in eine Textdatei

Verfasst: Dienstag 3. Februar 2015, 10:41
von snafu
@nieselfriem: Eine ``write``-Operation schreibt nicht zwingend direkt auf die Festplatte. Stattdessen landen die Daten zunächst in einem Zwischenspeicher. Ein tatsächliches Schreiben (durch Leeren des Puffers) erreichst du mittels ``.flush()`` bzw ``.close()``. Letzteres ruft ``.flush()`` auf und schließt die Datei anschließend.

Der gängige Weg, sowas in Python zu machen, ist:

Code: Alles auswählen

with open(dateiname, 'w') as outfile:
    outfile.write(dein_text)
Dies schließt die Datei automatisch, nachdem der Block unterhalb des ``with``-Statements (also das mit ``outfile.write``) verlassen wurde.

Die technischen Hintergründe klangen vielleicht etwas kompliziert, aber wenn du dich an den oben genannten Codeschnipsel hälst, dann sollte Python sich so verhalten, wie du es dir vorgestellt hast (Dateiinhalt sofort in Datei).

Re: Schreiben einer Integer Liste in eine Textdatei

Verfasst: Dienstag 3. Februar 2015, 10:49
von BlackJack
@nieselfriem: Wenn die Daten dann sofort nach dem schreiben in der Datei landen solltest Du vielleicht noch Zeilenendezeichen nach jedem Wert schreiben, sonst wird das wiedereinlesen/trennen der Daten schwierig. ;-)

Re: Schreiben einer Integer Liste in eine Textdatei

Verfasst: Dienstag 3. Februar 2015, 10:57
von Hyperion
Zudem gibt es für das Serialisieren von gängigen Python Datenstrukturen bereits fertige Libs, wie z.B. ``json`` oder ``pickle``. Evtl. sind diese geeigneter für Dein Vorhaben, da Du sonst das Parsen selber implementieren musst, falls Du die Daten wieder laden und nutzen willst... (was ja irgend wie meistens der Sinn einer Peristenz ist :-D )

Re: Schreiben einer Integer Liste in eine Textdatei

Verfasst: Dienstag 3. Februar 2015, 19:23
von nieselfriem
Hi leute
Passt soweit wie ich es nun habe

Code: Alles auswählen

with open("text.txt","w") as f:
    for item in liste:
        f.write(str(item)+", ")
f.close()

Danke und Grüße

niesel

Re: Schreiben einer Integer Liste in eine Textdatei

Verfasst: Dienstag 3. Februar 2015, 19:51
von BlackJack
@nieselfriem: Das schliessen ist nicht notwendig, das wird vom ``with`` erledigt.

Re: Schreiben einer Integer Liste in eine Textdatei

Verfasst: Dienstag 3. Februar 2015, 21:52
von /me
nieselfriem hat geschrieben:Passt soweit wie ich es nun habe
Das ist schön. Hoffentlich musst du die Daten nicht wieder einlesen, denn für Persistenz gibt es eindeutig bessere Formate.

Re: Schreiben einer Integer Liste in eine Textdatei

Verfasst: Mittwoch 4. Februar 2015, 08:48
von Hyperion
/me hat geschrieben: Das ist schön. Hoffentlich musst du die Daten nicht wieder einlesen, denn für Persistenz gibt es eindeutig bessere Formate.
Wie man hier sieht, muss er das doch - ein Glück hatte ich ihm ja schon JSON genannt :twisted: