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.