i

Experimente zur Fehlerbehandlung

Datei nicht gefunden

Betrachte noch einmal das folgende Programm zum Verschlüsseln von Texten.

def verschluesselterText(text, schluessel):

    """
    >>> verschluesselterText('HALLO', 4)
    'LEPPS'
    >>> verschluesselterText('ABC', 0)
    'ABC'
    >>> verschluesselterText('XYZ', 2)
    'ZAB'
    >>> verschluesselterText('ABC', 26)
    'ABC'
    """

    geheimtext = ''
    for zeichen in text:
        zahl = ord(zeichen)
        neuezahl = zahl + schluessel
        if neuezahl > ord('Z'):
            neuezahl = neuezahl - 26
        neuesZeichen = chr(neuezahl)
        geheimtext = geheimtext + neuesZeichen
    return geheimtext

def vereinfachterText(text):

    """
    >>> vereinfachterText('Hallo')
    'HALLO'
    >>> vereinfachterText('Süß oder sauer?')
    'SUESSODERSAUER'
    """
    
    textNeu = ''
    for zeichen in text:
        if ord(zeichen) >= ord('A') and ord(zeichen) <= ord('Z'):
            # zeichen ist ein Großbuchstabe
            textNeu = textNeu + zeichen
        elif ord(zeichen) >= ord('a') and ord(zeichen) <= ord('z'):
            # zeichen ist ein Kleinbuchstabe
            neuesZeichen = chr(ord(zeichen)-32)
            textNeu = textNeu + neuesZeichen
        elif zeichen == 'Ä' or zeichen == 'ä':
            textNeu = textNeu + 'AE'
        elif zeichen == 'Ö' or zeichen == 'ö':
            textNeu = textNeu + 'OE'
        elif zeichen == 'Ü' or zeichen == 'ü':
            textNeu = textNeu + 'UE'
        elif zeichen == 'ß':
            textNeu = textNeu + 'SS'
    return textNeu

def geladenerText(dateiname):
    datei = open(dateiname, 'r', encoding='iso-8859-1')
    text = datei.read()
    datei.close()
    return text

def textSpeichern(dateiname, text):
    datei = open(dateiname, 'w', encoding='iso-8859-1')
    datei.write(text)
    datei.close()

# Testfälle überprüfen
if __name__ == "__main__":
    from doctest import testmod
    testmod()

# Funktionen benutzen
aktuellerText = geladenerText('text_wikipedia_caesar.txt')
vereinfachterAktuellerText = vereinfachterText(aktuellerText)
verschluesselterAktuellerText = verschluesselterText(vereinfachterAktuellerText, 3)
textSpeichern('text_wikipedia_caesar_verschluesselt.txt', verschluesselterAktuellerText)

Wenn die angegebene Datei nicht vorhanden ist, gibt es eine Fehlermeldung.

>>> 
Traceback (most recent call last):
  File ".../laden_und_speichern1.py", line 69, in <module>
    aktuellerText = geladenerText('text_wikipedia_caesar.txt')
  File ".../laden_und_speichern1.py", line 53, in geladenerText
    datei = open(dateiname, 'r', encoding='iso-8859-1')
FileNotFoundError: [Errno 2] No such file or directory: 'text_wikipedia_caesar.txt'
</module>

Einen solchen Laufzeitfehler kann man vermeiden, wenn man eine Fehlerbehandlung vorsieht.

... wie oben ...

# Funktionen benutzen
try:
    aktuellerText = geladenerText('text_wikipedia_caesar.txt')
    vereinfachterAktuellerText = vereinfachterText(aktuellerText)
    verschluesselterAktuellerText = verschluesselterText(vereinfachterAktuellerText, 3)
    textSpeichern('text_wikipedia_caesar_verschluesselt.txt', verschluesselterAktuellerText)
except:
    print('zu verarbeitende Datei nicht gefunden')

Aufgabe 1

(a) Teste die Version mit Fehlerbehandlung.

(b) Der Benutzer soll den Namen der Datei selbst eingeben können. Ändere das Programm entsprechend ab. Warum ist es gerade dann sinnvoll, eine Fehlerbehandlung vorzusehen?

Suche

v
2.5.2.12.2
www.inf-schule.de/programmierung/funktional/konzepte/speichern/fehlerbehandlung

Rückmeldung geben