Umgang mit Textdateien

Notizen

  • eine englische Wortliste

  • Dateiobjekte stellen verschiedene Methoden bereit (mehr Infos):

    finput = open('words.txt','r') # 'r' öffnet im Lesemodus, 'w' im Schreibmodus (Start mit leerer Datei), 'a' im Anhänge-Schreibmodus (Schreiben an das Ende einer vorhandenen Datei), 'r+' im Update-Modus (Schreiben auch mittendrin möglich)
    
    finput.readline() # Liefert einen String bis zum nächsten Zeilenumbruch
    
    finput.readlines() # Liefert eine Liste aller Zeileninhalte der Datei
    
    finput.tell() # Gibt die aktuelle Leseposition in der Datei zurück
    
    finput.seek(zahl) # Verändert die Leseposition, z.B. auf den Dateianfang mit 'finput.seek(0)'
    
    foutput = open('output.txt','w')
    
    foutput.write(string) # schreibt string in die Datei
    
    foutput.writelines(liste) # schreibt den Inhalt der Liste zeilenweise in die Datei
    
    foutput.flush() # Schreibpuffer auf die Festplatte schreiben. Das ist meist nur auf der Kommandozeile (manchmal) sinnvoll. In eigenen Skripten muss man das nicht machen, weil beim Schließen von Dateien mit .close() der Puffer automatisch geschrieben wird.
    
    foutput.close() # Datei schließen = Schreibpuffer auf die Festplatte schreiben, Dateizugriff beenden und Datei freigeben. Es ist guter Stil (und kann vor Datenverlust schützen), Dateien am Ende des Programms *immer* zu schließen.
    
  • Wer noch mehr programmieren will: vom 1. bis 25. Dezember läuft wieder der Advent of Code . Bei ausreichend Bedarf können wir jeweils nach der Python-Vorlesung über ausgewählte Aufgaben sprechen. (Github-Repository mit Lösungen für einige der Aufgaben)

Aufgaben bis zum nächsten Mal

  • Lesen Sie Kapitel 10 „Lists“ im Buch. Vollziehen Sie die Beispiele möglichst am Computer nach und versuchen Sie sich an so vielen Aufgaben wie möglich!

  • Bearbeiten Sie die folgende Aufgabe 05 und speichern Sie das Ergebnis in Ihrem pythonanywhere-Account! Sie können den nachfolgenden Text der Aufgabenstellung auch direkt in den Editor bei pythonanywhere kopieren. (Muster 05)

    aufgabe_05_messdatenkonvertierung.py
    # Die Datei ``messdaten.txt`` ist eine Textdatei mit
    # infrarotspektroskopischen Messdaten. Jede Zeile
    # enthält zwei Zahlen: eine Wellenzahl (in der Einheit 1/cm)
    # und einen zugehörigen Absorptionswert, getrennt durch das
    # (unsichtbare) Tabulatorzeichen ``"\t"``.
    # 
    #  1. Schreiben Sie ein Programm, dass die Datei ``messdaten.txt``
    #     einliest, alle Punkte durch Kommas ersetzt und unter einem
    #     neuen Namen abspeichert. Lesen Sie sich dazu die
    #     Dokumentation der String-Methode ``.replace()`` durch.
    #     Diese kann genau wie ``.strip()`` für jede Variable vom
    #     String-Typ aufgerufen werden.
    #
    #  2. Bei welcher Wellenzahl wird der höchste Absorptionswert
    #     erreicht?
    #
    #  3. Ergänzen Sie beim Abspeichern die Daten um eine dritte
    #     Information, die Wellenlänge. Diese ist der Kehrwert der
    #     Wellenzahl. Die Wellenlänge soll in der Ausgabedatei
    #     jeweils als zweite Spalte in der Einheit Mikrometer
    #     abgespeichert werden und idealerweies vier
    #     Nachkommastellen Genauigkeit aufweisen.
    #
    # Beispiel: Aus der ersten Zeile der Datei ``messdaten.txt``
    #
    # 3998.76332	0.00110
    #
    # wird durch die Konvertierung in der ersten Zeile der
    # Ausgabedatei (hier gleich mit der Wellenlänge in der
    # neuen zweiten Spalte):
    #
    # 3998.76332    2.5008  0.00110
    #
    # *Tipp:* Dafür ist die String-Methode ``.split()`` nützlich.
    # Informieren Sie sich dazu in der Python-Dokumentation.
    # Und für die Formatierung helfen die f-Strings, siehe
    # letzte Vorlesung und insbesondere der Link auf der Webseite zu dem Online-Tutorial.
    #
    # wort1, wort2 = "Ein Test".split(" ")