Крайне важно осознавать, какие ошибки могут возникнуть при работе над проектами в реальном времени, поскольку они напрямую влияют на работу вашего приложения, например, могут вызвать сбои или остановку работы в нём.

Разрабатывая приложение для удаления фона изображения на Python, я столкнулся с ошибкой «Файл не существует». Это означает, что пользователи не могут открыть файлы, которые были перемещены или удалены с их систем. Если они попытаются это сделать, Python сможет обработать исключение FileNotFoundError.

Давайте рассмотрим пример сценария, чтобы вы могли понять, где следует использовать этот подход.

Предположим, у меня в папке есть файл с именем «demo.txt», и вы пытаетесь открыть этот файл.

Обработка исключений «файл не существует» в Python

Давайте удалим файл demo.txt и попробуем получить доступ к его содержимому.

удалим файл demo.txt

Итак, мы попытались открыть несуществующий файл demo.txt, но он выдал эту ошибку:

FileNotFoundError: [Errno 2] No such file or directory: 'demo.txt'

Ваша программа перестанет работать, если возникнет эта ошибка.

Давайте рассмотрим, как можно устранить ошибки такого рода при работе с файлами.

Существует пять различных способов проверки существования файла, и с помощью этих четырёх методов вы можете обрабатывать ошибки.

Содержание

Используя try и except

Прежде всего, мы будем применять блоки try и except, которые в Python позволяют эффективно обрабатывать исключения. Благодаря этим блокам вы сможете управлять любыми ошибками.

В данной статье мы рассмотрим работу с блоком try и except на примере исключения FileNotFoundError. Это исключение возникает при попытке открыть файл, но по указанному пути его не существует. Если не использовать try и catch, то программа остановится, когда обнаружит, что файл отсутствует.

Синтаксис:

try:
    # Code block to be executed
except FileNotFoundError:
    # This code block will be execute, when file does not exist
  • В Python существуют разные типы ошибок. Мы используем FileNotFoundError, потому что работаем с файлом.
  • кроме ErrorName: включение блока исключений при включении блока try является обязательным.

Давайте разберемся на практическом примере, чтобы проверить, не существует ли файл в Python.

try:
    file_name = open('check.txt')
    print("Successfully Uploaded the file")
except FileNotFoundError:
    print('Something went wrong, please try again later')
finally:
    print('Application is still working....')

Используя try и except

В приведённом выше коде мы пытаемся открыть файл «check.txt», которого нет в текущей папке. Для этого используется конструкция try…except.

Если возникнет ошибка, то блок except перехватит её. В данном случае мы ожидаем ошибку FileNotFoundError, поэтому используем её название в блоке except. Блок finally гарантирует, что приложение не прекратит работу при возникновении такой ошибки.

С использованием модуля pathlib

В Python мы можем воспользоваться встроенными методами модуля pathlib, чтобы проверить, существует ли нужный нам файл. Давайте рассмотрим два различных метода этого модуля, которые возвращают значение True или False в зависимости от того, существует ли файл.

  1. путь lib.is_file().
  2. pathlib.exists().

В чём разница между методами is_file() и Exist() в Python, которые оба проверяют, существует ли файл, и возвращают логическое значение?

Основное отличие заключается в том, что метод exists() может проверять существование не только файлов, но и папок. В то же время метод is_file() проверяет только путь к файлу и возвращает False, если путь не указывает на файл.

Используя метод pathlib.is_file()

Метод pathlib.is_file() предназначен для проверки наличия файлов по указанному пути. Он возвращает True, если файл существует, и False, если его нет.

Мы будем использовать этот метод для обработки исключений в нашей программе.

Синтаксис:

pathlib.Path("input_path").is_file()
  • pathlib.Path(“input_path”).is_file(): в синтаксисе pathlib — это имя модуля, Path() — это метод, в котором вы указываете путь к файлу, а is_file() проверит, существует ли этот путь или нет, и вернуть логическое значение.
  • В поле input_path вы можете указать только путь к файлу.
import pathlib
file_path = pathlib.Path('check.txt')

if file_path.is_file():
    file_name = open(file_path)
    print("Successfully Uploaded the file")

else:
    print(f"{file_path} File does not exist, please try again later")

print("Application is running...")

используя метод pathlib.is_file()

В приведённом выше коде мы пытаемся открыть файл «check.txt», используя следующий код: «имя_файла = open(путь_файла)». Однако в каталоге нет файла с таким именем. Вместо того чтобы выдать ошибку, код выводит оператор блока else, потому что мы используем метод is_file() в условии перед открытием файла.

Таким образом, код проверит, существует ли файл. Если файл не найден, код выполнит блок операторов else. Это позволяет программе продолжать работу, не прерываясь из-за ошибки.

Используя метод pathlib.exists()

Мы также можем использовать метод exists() из модуля pathlib. Этот метод предназначен для проверки существования пути к каталогу, но также может проверять существование пути к файлу и возвращать булево значение.

Синтаксис:

pathlib.Path("input_path").exists()
  • Во входном пути вы можете указать путь к файлу, путь к каталогу или и то, и другое.

Давайте выполним код, чтобы проверить, что файл не существует. Исключение Python.

from pathlib import Path

file_path = Path('check.txt')

if file_path.exists():
    file_name = open(file_path)
    print("File Uploaded successfully")
else:
    print('File does not exist, please try again later')

print("Application is still working properly...")

используя метод pathlib.exists()

В этом коде мы используем тот же подход и код, что и в предыдущем примере. Единственное отличие заключается в том, что мы применяем метод `exists()` следующим образом: «if file_path.exists():», чтобы обработать исключение «файл не существует» в Python.

С помощью модуля os

В Python мы будем применять встроенные методы модуля os для обработки исключений, возникающих при отсутствии файла. Как и в случае с модулем pathlib, мы используем два различных метода из модуля os.

  1. os.path.isfile().
  2. os.path.exists().

Предположим, вы хотите понять разницу между этими методами. Мы уже объяснили разницу в предыдущем примере, потому что оба метода работают одинаково.

С помощью метода os.path.isfile()

В Python метод os.path.isfile() также возвращает True или False, указывая на наличие или отсутствие файла.

Синтаксис:

os.path.isfile('file_path'):

Вот пример использования метода isfile() модуля os в Python.

import os

file_name = 'check.txt'

if os.path.isfile(file_name):
    working_file = open(file_name)
    print("File Uploaded successfully")
else:
    print('File does not exist')

print("Application is running...")

с помощью метода os.path.isfile()

В приведённом выше коде мы сначала проверяем, существует ли файл. Если файл найден, мы пытаемся его открыть. В противном случае выполняется блок оператора else, который выводит сообщение «Файл не существует». При этом не возникает ошибки, если файла действительно нет.

С использованием метода os.path.exists()

Также в Python можно использовать метод `os.path.exists()` для проверки существования путей к файлам и каталогам. Этот метод возвращает логическое значение, которое зависит от того, существует ли указанный путь.

import os

file_name = 'check.txt'

if os.path.exists(file_name):
    working_file = open(file_name)
    print("File Uploaded successfully")
else:
    print('File does not exist')

print("Application is running...")

с использованием метода os.path.exists()

В этом коде мы применяем тот же подход, что и в предыдущем примере. Единственное отличие заключается в использовании другого метода — if os.path.exists (file_name).

Добавить комментарий