Seite 1 von 1

try.......except

Verfasst: Sonntag 16. April 2017, 13:22
von werhei14
Hallo und zuerst Frohe Ostern,

Wie kann ich in den unten aufgeführten Code einen "Fehler-Abfänger" mit
(try......except) einbauen, falls die aufzurufende Datei nicht existiert?

Ohne meine "try......except"-Versuche läuft das kleine Programm
gut.

Code:

Code: Alles auswählen

fobj_in = open(r"C:\Users\..................\Agatha Christie und Virginia Woolf.txt","r")
fobj_out = open(r"C:\Users\....................\Agatha Christie und Virginia Woolf_2.txt","w")
                    
i = 1

for line in fobj_in:
    print(line.rstrip())
    fobj_out.write(str(i) + ": " + line)
    i = i + 1
 
fobj_in.close()
fobj_out.close()
Gruß
Werner

Re: try.......except

Verfasst: Sonntag 16. April 2017, 14:10
von BlackJack
@werhei14: Wenn wirklich nur das öffnen der Datei abgesichert werden soll, dann muss das `open()` in einem ``try``-Block stehen, mit ``except`` muss `EnvironmentError` behandelt werden, und zwar so das man in der Fehlerbehanldung prüft ob die Fehlernummer `errno.ENOENT` entspricht (Dateieintrag existiert nicht) und entsprechend reagiert. Falls es eine andere Fehlernummer ist kannst Du die Ausnahme mit ``raise`` erneut auslösen. Der Code für den Fall das es keine Ausnahme gab kommt dann in den ``else``-Block zu dem ``try``/``except`` und das schliessen der Datei in einen ``finally``-Block.

`i` braucht man übrigens nicht manuell hoch zählen, dafür gibt's die `enumerate()`-Funktion.

Re: try.......except

Verfasst: Sonntag 16. April 2017, 19:58
von werhei14
Hallo BlackJack,

danke für deine Hilfe; blicke jetzt als
Neuling doch wieder etwas weiter
(bis zum nächsten Problem).

Schönen Abend noch!

Gruß
Werner

Re: try.......except

Verfasst: Montag 17. April 2017, 06:31
von snafu
Welche Python Version verwendest du? In Python 3 gibt es spezielle Exceptions für Dateioperationen.

Re: try.......except

Verfasst: Montag 17. April 2017, 07:46
von Natrix natrix
Sofern Dich die Art der Fehler nicht interessiert, kannst Du es statt mit try-execpt auch mit einem with-Statement versuchen:

Code: Alles auswählen

    with open("test.txt", 'r') as file1:
        for line in file1:
            print(line)
Du brauchst dann noch nicht mal ein close, wenn es einen Fehler gibt.

VG

Re: try.......except

Verfasst: Montag 17. April 2017, 08:12
von karolus
Natrix natrix hat geschrieben:Sofern Dich die Art der Fehler nicht interessiert, kannst Du es statt mit try-execpt auch mit einem with-Statement versuchen:

Code: Alles auswählen

    with open("test.txt", 'r') as file1:
        for line in file1:
            print(line)
Du brauchst dann noch nicht mal ein close, wenn es einen Fehler gibt.
Aha! - Und was glaubst du jetzt, passiert …
werhei14 hat geschrieben:…falls die aufzurufende Datei nicht existiert?

Re: try.......except

Verfasst: Montag 17. April 2017, 20:23
von werhei14
Hallo Leute,

danke für eure Hinweise; bin sehr angetan
von den vielen Hinweisen.

Ich werde die Vorschläge ausprobieren.
Meine Python -Version: 3.6.1
(Wohl die Neueste)

Gruß
Werner

Re: try.......except

Verfasst: Montag 17. April 2017, 20:49
von snafu
Dann kannst du einfach FileNotFoundError abfangen.