Курс Python → Управление ресурсами в Python

Контекстные менеджеры в Python предоставляют удобный способ управления ресурсами, такими как файлы, сокеты или соединения с базой данных. Они позволяют нам гарантировать, что ресурсы будут корректно закрыты после завершения работы с ними, даже в случае возникновения исключения. Для создания контекстного менеджера нам нужно определить класс с методами __enter__ и __exit__, которые будут вызываться при входе и выходе из контекста соответственно.


class FileHandler:
    def __init__(self, filename, mode):
        self.filename = filename
        self.mode = mode

    def __enter__(self):
        self.file = open(self.filename, self.mode)
        return self.file

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.file.close()

В приведенном выше примере класс FileHandler представляет собой контекстный менеджер для работы с файлами. При использовании оператора «with» экземпляр этого класса будет автоматически открывать файл при входе в контекст и закрывать его при выходе из контекста. Это гарантирует, что ресурсы будут освобождены правильно, даже если в процессе обработки файла возникнет исключение.

Для использования созданного контекстного менеджера достаточно просто обернуть блок кода, который работает с файлом, в оператор «with» и указать созданный экземпляр класса:


with FileHandler('example.txt', 'r') as file:
    for line in file:
        print(line)

В данном примере мы открываем файл ‘example.txt’ для чтения и выводим его содержимое построчно. После завершения работы с файлом он будет автоматически закрыт благодаря контекстному менеджеру. Таким образом, использование контекстных менеджеров в Python позволяет нам писать более безопасный и чистый код, обеспечивая правильное управление ресурсами.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Обработка исключений в Python
  2. Добавление элемента к кортежу
  3. Генерация UUID в Python
  4. Деление в Python
  5. Поиск подстроки в строке
  6. Избегание циклических зависимостей классов в Python
  7. Отношения подклассов в Python
  8. Роль object и type в Python
  9. Замыкания в Python
  10. Создание словаря через dict comprehension
  11. Списковые включения в Python
  12. Условные выражения в Python
  13. Методы и функции в Python
  14. Метод __float__ в Python
  15. Парсинг веб-страниц с Beautiful Soup
  16. Создание уникального проекта
  17. Сортировка в Python
  18. Преобразование числа в список цифр
  19. Метод splitlines() для разделения строк
  20. Flask — веб-фреймворк Python
  21. PEP-401: оператор
  22. Метод pos в Python
  23. Настройка вывода в Numpy
  24. Сравнение строк в Python
  25. Обработка исключений в Python 3
  26. Структуры данных в Python
  27. Генераторы в Python
  28. Удаление первого элемента списка
  29. Идентификатор объекта в Python
  30. Абстракции словарей и множеств в Python
  31. Множества и frozenset
  32. Генераторы списков в Python
  33. Реализация метода __abs__ в Python
  34. Равенство и идентичность в Python
  35. Список импортированных модулей в Python
  36. Подсчет вхождений элементов
  37. Удаление дубликатов с помощью множеств
  38. Python itertools combinations() — группировка элементов
  39. Работа с getopt
  40. Операторы объединения в Python 3.9
  41. Копирование и вставка текста в Python
  42. Конвертация коллекций в Python
  43. Обработка ошибок в JSON данных

Marketello читают маркетологи из крутых компаний