Seite 1 von 1
Liste in eine txt-Datei speichern
Verfasst: Donnerstag 17. März 2016, 23:36
von reddy
Hallo liebe Comunity,
ich habe eine gute Frage. Wie kann man eine Liste in eine Text-Datei ohne rechteckige Klammern abspeichern?
Vielleicht bin ich doof, aber ich fange gerade an.
Der Code sieht so aus:
datei = open("1.txt", "r+")
L = [1, 2, 3, 4, 5]
L = str(L)
datei.write(L)
datei.close()
Ich möchte, dass es in der Text-Datei so abgespeichert wird: 1, 2, 3, 4, 5.
Aber, ich bekomme immer so:
[1, 2, 3, 4, 5]
Ich bin schon am Verzweifeln...

Re: Liste in eine txt-Datei speichern
Verfasst: Freitag 18. März 2016, 00:15
von BlackJack
@reddy: Vergiss die Zeichenkettendarstellung von Listen und erstelle die Zeichenkette selbst. Es gibt da so eine praktische `join()`-Methode auf Zeichenketten. Eine Zahl kann man mit der `str()`-Funktion in eine Zeichenkette umwandeln. Dann brauchst Du nur noch eine Schleife um eine neue Liste mit Zeichenketten aus den Zahlen erstellen, oder eine „list comprehension“, oder einen Generatorausdruck, oder die `map()`-Funktion.
Wenn Du etwas in eine Datei schreiben möchtest, dann solltes Du die zum Schreiben öffnen. Nicht zum lesen und schreiben. 'r+' braucht man nur ganz selten, für Binärdaten, und wenn man genau weiss was man da tut.
Re: Liste in eine txt-Datei speichern
Verfasst: Freitag 18. März 2016, 14:03
von reddy
Hallo BlackJack,
Danke schön für die Antwort. Aber ich verstehe es immer noch nicht. :K
Kannst du bitte ein paar Zeilen Code schreiben?
Re: Liste in eine txt-Datei speichern
Verfasst: Freitag 18. März 2016, 14:13
von BlackJack
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf8
from __future__ import absolute_import, division, print_function
def main():
data = [1, 2, 3, 4, 5]
with open('test.txt', 'w') as out_file:
out_file.write('{0}\n'.format(', '.join(str(n) for n in data)))
if __name__ == '__main__':
main()
Re: Liste in eine txt-Datei speichern
Verfasst: Freitag 18. März 2016, 14:34
von reddy
Ohje...

Der Code funktioniert. Allerdings, muss ich jetzt eine Stunde sitzen, um zu verstehen, was da passiert.
Wie ich verstanden habe, muss man die Ausgabe in eine Datei einfach "brutal" formatieren?
Danke sehr!
Re: Liste in eine txt-Datei speichern
Verfasst: Freitag 18. März 2016, 14:45
von Sirius3
@reddy: hier muß man nichts brutal machen, sondern es ist der Normalfall, dass man die Ausgabe so formatieren muß, wie man sie gerne hätte. Wenn Du eigentlich eine Datei im csv-Format schreiben willst, böte es sich an, das csv-Modul dafür zu verwenden.
Re: Liste in eine txt-Datei speichern
Verfasst: Freitag 18. März 2016, 16:50
von reddy
Sirius3 hat geschrieben:@reddy: hier muß man nichts brutal machen, sondern es ist der Normalfall, dass man die Ausgabe so formatieren muß, wie man sie gerne hätte. Wenn Du eigentlich eine Datei im csv-Format schreiben willst, böte es sich an, das csv-Modul dafür zu verwenden.
Hallo Sirius3,
ja, csv scheint dafür besser geignet zu sein.
Wie kann man z.B. eine Liste in der Form [['Schulz', 'Steffi', 165], ['Bolz', 'Carina', 172]] in eine csv-Datei abspeichern?
Re: Liste in eine txt-Datei speichern
Verfasst: Freitag 18. März 2016, 17:00
von BlackJack
@reddy: Erster Schritt: Dokumentation des csv-Moduls lesen und verstehen. Zweiter Schritt: Wissen in Code umsetzen.
Re: Liste in eine txt-Datei speichern
Verfasst: Freitag 18. März 2016, 17:26
von reddy
BlackJack hat geschrieben:@reddy: Erster Schritt: Dokumentation des csv-Moduls lesen und verstehen. Zweiter Schritt: Wissen in Code umsetzen.
Ok, ich nehme die Frage zurück. Ich habe schon die Lösung rausgegoogelt.
Nur noch eine Frage!
Ich habe jetzt CSV-Datei, die ich mit Excel öffnen kann.
Man kann natürlich jetzt die Daten im Excel sortieren.
Ich würde es aber bevorzugen, die Daten mit Python zu sortieren.
Nach welchen Befehlen soll ich im Internet googeln?
Ich finde es auf Anhieb nicht.

Re: Liste in eine txt-Datei speichern
Verfasst: Samstag 19. März 2016, 16:18
von /me
reddy hat geschrieben:Ich würde es aber bevorzugen, die Daten mit Python zu sortieren.
Nach welchen Befehlen soll ich im Internet googeln?
Ich würde mich einfach an die offizielle Dokumentation halten. Im Tutorial ziemlich weit vorne wird bereits die
sort-Methode für Listen erwähnt. Das Verständnis des
key-Parameters ist für eine flexible Sortierung wichtig. Experimentiere mal damit und wenn du da nicht weiterkommst, dann beschreibe hier deinen Ansatz und dein konkretes Problem damit. Wir können dich dann bestimmt in die richtige Richtung schubsen.
Re: Liste in eine txt-Datei speichern
Verfasst: Samstag 19. März 2016, 18:41
von eckhard
@reddy: Hier noch eine Lösung:
Code: Alles auswählen
L = [1, 2, 3, 4, 5]
datei = open('eins.txt',' w')
datei.write(', '.join((map(str, L))))
datei.close()
Mit map(str, L) werden alle Integerzahlen in der Liste in einen String gewandelt
und dann mit ', '.join zusammengefügt, wobei Komma gefolgt von Leerzeichen
als Trennung benutzt wird.
Re: Liste in eine txt-Datei speichern
Verfasst: Samstag 19. März 2016, 22:12
von reddy
Die Hilfe ist echt super hier. Danke schön an alle!
Ich versuche Python als Hobby zu lernen. Mit jeder Antwort kommen immer mehr Fragen.
Z.B. ich habe folgende drei Python-Scripte: 1.py, 2.py und 3.py.
Ich muss sie nacheinander ausführen. Zur Zeit verwende ich eine Batch-Datei zum Starten.
Geht es auch mit einem Python-Script? Das Programm muss folgendes machen.
1) Starte 1.py, warte bis es beendet wird, sonst Fehlermeldung.
2) Starte 2.py, warte bis es beendet wird, sonst Fehlermeldung.
3) Starte 3.py, warte bis es beendet wird, sonst Fehlermeldung.
Kann man es mit ein paar Zeilen Code realisieren?
Re: Liste in eine txt-Datei speichern
Verfasst: Samstag 19. März 2016, 23:58
von Sirius3
@reddy: schreibe Deine Programme 1.py, 2.py und 3.py wie Module und rufe sie von einem Hauptskript aus auf.