Курс 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. Декораторы с @wraps
  3. Генерация ключей RSA
  4. Работа с WindowsPath()
  5. Выборка чисел
  6. Метод __irshift__ для Python
  7. Получение текущего времени в Python
  8. Создание функций высшего порядка
  9. Работа с комплексными числами в Python
  10. Проверка запуска скрипта или импорта модуля
  11. Отображение HTML кода в Python
  12. Непрерывная проверка в Python
  13. Обработка исключений в Python
  14. Создание даты из строки ISO
  15. Работа с коллекциями Python
  16. Значения по умолчанию в Python
  17. Работа с модулем glob в Python
  18. Объединение словарей в Python
  19. Функция enumerate() в Python
  20. Реверс строки в Python
  21. Комментарии в Python.
  22. Назначение максимального и минимального значения переменной в Python.
  23. Подсчет элементов с помощью Counter из collections
  24. Генераторы в Python
  25. Выражения-генераторы в Python
  26. Отрицательные индексы списков в Python
  27. Нан-рефлексивность в Python
  28. Простой калькулятор Python
  29. Возвращение нескольких значений через кортеж или класс
  30. Тестирование с unittest
  31. Перемешивание списка с shuffle()
  32. ChainMap.new_child() — добавление нового словаря
  33. Создание генераторов
  34. Декоратор проверки активности
  35. Проверка кортежей.
  36. Оператор «or» в Python
  37. Профилирование кода
  38. Логирование в Python
  39. Открытие и запись файлов
  40. Работа с enumerate()
  41. Кортеж в Python: создание, доступ, изменение
  42. Разработка игры Pong с turtle
  43. Переопределение метода __pow__
  44. Создание циклической ссылки

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