Skip to content

08 Dateien

Juergen Hansmann edited this page Mar 25, 2022 · 6 revisions

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 sogar lesezugriff, 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

  1. Erzeuge eine neue Textdatei mit dem Namen personen.txt.
  2. Schreibe einige Personen in die Liste im Format Vorname Nachname.
  3. Versuche zuerst, die Namen aus der Datei personen.txt zu laden und nur die Nachnamen auf dem Bildschirm zu zeigen
  4. 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() oder writelines() um die Zeilen in das Textfile zu schreiben. Denke an die Zeilenumbrüche \n.
Clone this wiki locally