Ich habe ein Skript, wo ein Benutzer aufgefordert wird, einen Dateinamen (einer Datei, die geöffnet werden soll) einzugeben, und wenn die Datei nicht im aktuellen Verzeichnis vorhanden ist, wird der Benutzer erneut aufgefordert. Hier ist die kurze Version:Python "open()" wirft verschiedene Fehler für "Datei nicht gefunden" - wie mit beiden Ausnahmen umzugehen?
file = input("Type filename: ")
...
try:
fileContent = open(filename, "r")
...
except FileNotFoundError:
...
Als ich mein Skript auf meinem MacOS X in Python getestet 3.3x es völlig in Ordnung ist, wenn ich die falschen Dateinamen absichtlich geben (es führt die Suite unter „erwarten“).
Wenn ich jedoch meinen Code auf einem Windows-Computer in Python 3.2x ausführen wollte, erhalte ich einen Fehler, der besagt, dass "FileNotFoundError" nicht definiert ist. Also, Python 3.2 unter Windows denkt "FileNotFoundError" ist eine Variable und die Programme werden mit einem Fehler beendet.
Ich fand heraus, dass Python 3.2 unter Windows einen "IOError" auslöst, wenn der Eingabedateiname nicht gültig ist. Ich habe es auf meinem Linux-Rechner in Python 2.7 getestet und es ist auch ein IOError.
Mein Problem ist jetzt, dass der Code mit
except "FileNotFoundError":
wird auf Windows-Python nicht ausgeführt 3.2, aber wenn ich es
except "IOError":
es auf meinem Mac arbeiten wird sich nicht ändern nicht mehr.
Wie könnte ich es umgehen? Der einzige Weg, an den ich denken kann ist, nur except
zu verwenden, was ich normalerweise nicht will.
Dies ist nicht wegen Mac/Windows, es ist die * Version * von Python. Ich würde 3.2/3.3 auch auf OS X (und 3.3 auf Windows) untersuchen, die Änderungsprotokolle konsultieren und dann die Frage/den Titel entsprechend überarbeiten. –