Курс 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. Функция divmod() в Python
  2. Удаление ссылок в Python
  3. Создание словаря в Python
  4. Виртуальные среды в Python
  5. Дефолтные параметры в Python
  6. Применение функции к каждому элементу списка
  7. Проверка версии Python
  8. Управление фоновыми задачами в Python
  9. Применение промокода в Много лосося
  10. Поток данных в Python
  11. Python Метод Union Множеств
  12. Получение значений из словарей
  13. Удаление ключа из словаря
  14. Запуск внешних программ с subprocess
  15. Python: Splat-оператор и splatty-splat
  16. Операторы сравнения в Python
  17. Определение имен функций
  18. Тернарный оператор в Python
  19. Операция += для списков
  20. Работа со случайными элементами
  21. UserString в Python
  22. Нан-рефлексивность в Python
  23. Перезагрузка оператора в Python
  24. Python и Монти Пайтон
  25. Разделение строки с помощью split()
  26. Метод ipow для возведения в степень
  27. Python 3.12: Псевдонимы типов
  28. Преобразование числа в список цифр
  29. Удаление дубликатов из списка с помощью dict.fromkeys
  30. Оператор * в Python
  31. Чтение и запись TOML-конфигов
  32. Python enumerate() для работы с индексами
  33. Протокол управления контекстом
  34. Особенности запятых в Python
  35. Работа с срезами в Numpy
  36. Принципы программирования
  37. Разделение строк методом split()
  38. Проверка на истинность объектов в Python
  39. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  40. Поиск анаграмм с Counter
  41. Функциональное программирование в Python
  42. Сглаживание списка
  43. Участие в LP стейкинге Waves
  44. Множественные конструкторы в Python
  45. Создание словаря с значением по умолчанию

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