У меня есть сценарий, в котором пользователю предлагается ввести имя файла (файла, который нужно открыть), и если файл не существует в текущем каталоге, пользователю предлагается снова. Вот краткая версия:
file = input("Type filename: ")
...
try:
fileContent = open(filename, "r")
...
except FileNotFoundError:
...
Когда я тестировал свой скрипт на своей MacOS X в Python 3.3x, он отлично работал, когда я намеренно вводил неправильное имя файла (он запускает пакет под «ожиданием»).
Однако, когда я хотел запустить свой код на компьютере с Windows в Python 3.2x, я получаю сообщение об ошибке, в котором говорится, что «FileNotFoundError» не определен. Итак, Python 3.2 в Windows считает, что «FileNotFoundError» — это переменная, и программа завершает работу с ошибкой.
Я понял, что Python 3.2 в Windows выдает «IOError», если имя входного файла неверно. Я протестировал его на своей Linux-машине в Python 2.7, и это также ошибка IOError.
Моя проблема в том, что код с
except "FileNotFoundError":
не будет работать на Windows Python 3.2, но если я изменю его на
except "IOError":
это больше не будет работать на моем Mac.
Как я мог обойти это? Единственный способ, который я могу придумать, это использовать только except
, чего я обычно не хочу.