try.......except

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
werhei14
User
Beiträge: 14
Registriert: Montag 10. April 2017, 20:35

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
Zuletzt geändert von Anonymous am Sonntag 16. April 2017, 13:58, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
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.
werhei14
User
Beiträge: 14
Registriert: Montag 10. April 2017, 20:35

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
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Welche Python Version verwendest du? In Python 3 gibt es spezielle Exceptions für Dateioperationen.
Benutzeravatar
Natrix natrix
User
Beiträge: 16
Registriert: Mittwoch 29. März 2017, 09:16

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
karolus
User
Beiträge: 141
Registriert: Samstag 22. August 2009, 22:34

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?
werhei14
User
Beiträge: 14
Registriert: Montag 10. April 2017, 20:35

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
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Dann kannst du einfach FileNotFoundError abfangen.
Antworten