-
Notifications
You must be signed in to change notification settings - Fork 1
08 Dateien
Bei den bisher geschriebenen Skripten ist das Resultat immer eine Ausgabe auf dem Bildschirm. In vielen Fällen ist es aber gewünscht, die Resultate z.B. in eine Datei zu schreiben.
Wir sollten also das Schreiben und Lesen von Dateien mittels Python beherrschen.
datei = r"D:\tutorial\textfile.txt"
with open(datei, "r") as lesezugriff:
inhalt = lesezugriff.readlines()
print(inhalt)
- Das
with open
Statement mit dem Parameterwert"r"
erlaubt es, einen Lesezugriff (read) auf eine Datei herzustellen. Im Beispiel heisst er sogarlesezugriff
, die Benennung ist aber frei. - Die Funktion
readlines()
liefert eine Liste mit je einem Element pro Zeile - Der Zeilenumbruch wird als \n ebenfalls gelesen.
In einem String können Backslashes vor bestimmten Buchstaben eine besondere Bedeutung haben (\n
für new line, \t
für tabulator etc.). Wenn dies nicht gewünscht ist, kann ein kleines r
direkt vor den String gesetzt werden. Dann ist ein Backslash einfach ein Backslash.
print("das ist ein \text")
print(r"das ist ein \text")
Sonderzeichen und Umlaute führen beim Programmieren immer wieder zu Problemen. In Variablennamen sind sie sogar verboten.
Am besten wäre es, ganz darauf zu verzichten, aber da wir als Programmierer nicht immer die Kontrolle darüber haben (Dateipfade oder -inhalte von Dritten), müssen wir einen Trick anwenden (der meistens, aber leider nicht immer) funktioniert:
In die allererste Zeile des Scripts exakt folgende Zeile einfügen:
# -*- coding: utf-8 -*-
Übung: Textfile lesen und schreiben
namen.py
- Erzeuge eine neue Textdatei mit dem Namen
personen.txt
.- Schreibe einige Personen in die Liste im Format Vorname Nachname.
- Versuche zuerst, die Namen aus der Datei
personen.txt
zu laden und nur die Nachnamen auf dem Bildschirm zu zeigen- Wenn das klappt, schreibe die Nachnamen in alphabetischer Reihenfolge in die Datei
nachnamen_alphabetisch.txt
zu schreiben.Tipps:
- Schritt 1 und 2 kannst du auch manuell ohne Programmieren machen, oder du lädst die Datei hier herunter: https://raw.githubusercontent.com/hansmannj/py-tutorial/master/resources/personen.txt
- Nutze
.strip()
um Zeilenumbrüche zu eliminieren.- Mit
.split(" ")
können Vor- und Nachname in eine Liste mit zwei Einträgen aufgeteilt werden, die nachher über ihren Index[]
angesprochen werden können.with open
mit dem Parameterwert"w"
öffnet einen Schreibzugriff (write) auf eine Datei. Eine bestehende Datei wird überschrieben, eine neue automatisch angelegt.- Verwende
write()
oderwritelines()
um die Zeilen in das Textfile zu schreiben. Denke an die Zeilenumbrüche\n
.
Finde mehr interaktive Beispiele zu den meisten Kapiteln als Python Notebook.