Главная страница Новости кинофильмов Игровые новости Новости спорта Новости технологий Автомобильные новости

Улавливаете ошибку FileNotFoundError? Осторожно!

Новости

Последнее обновление от 3 октября 2020 г.

В Python FileNotFoundError — это исключение, которое возникает, когда запрашиваемый файл не существует. Многие люди предполагают, что когда их программам не удается открыть файл в режиме только для чтения или удалить файл, должна быть вызвана ошибка FileNotFoundError, и им нужно будет только обработать ее. Например, некоторые люди написали бы код, похожий на:

def process_file(путь): import sys try: f = open(путь, ‘r’) # или os.remove(путь), за исключением FileNotFoundError в виде e: print(«Файл {путь} не найден!», file=sys.stderr) возвращает # обработать файл…

Однако на самом деле этот код может вызвать непредвиденные ошибки. Причина в том, что неспособность открыть файл в режиме только для чтения или удалить файл не обязательно вызвана его несуществованием. Очень часто это происходит по разным причинам: недостаточное разрешение или файл находится в каталоге. В этом случае вместо FileNotFoundError будут выданы PermissionError или IsADirectoryError. Итак, в приведенном выше примере хотелось бы перехватить их все:

def process_file(путь): import sys try: f = open(путь, ‘r’) # или os.remove(путь), за исключением FileNotFoundError: print(f»Файл {путь} не найден!», file=sys.stderr) возвращает, кроме PermissionError: print(f»Недостаточно прав на чтение {пути}!», file=sys.stderr) возвращает, кроме IsADirectoryError: print(f»{путь} — это каталог!», file=sys.stderr) возвращает # обработать файл…

Или еще проще, используйте старую добрую ошибку:

def process_file(путь): import sys try: f = открыть(путь, ‘r’), за исключением ошибки e: print(f»Не удается открыть {путь}: {e}», файл=sys.stderr) возвращает # обработать файл…


Другие новости: