Курс 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. Шаблоны и наследование в Flask
  2. Запуск внешних программ с subprocess
  3. Запуск Python из интерпретатора
  4. Измерение времени выполнения кода с помощью time
  5. Удаление ключа из словаря
  6. Функция enumerate() — Python
  7. Получение имени функции с помощью inspect
  8. Работа с массивами в Python
  9. Константы в модуле cmath
  10. Импорт модулей в Python 3.12
  11. Работа с очередями в Python
  12. Обучение модели с указанием эпох
  13. Декораторы в Python
  14. Навыки Python: строки, типы данных
  15. Округление в Python
  16. Оператор is в Python
  17. Функции min(), max(), sum()
  18. Использование функции product
  19. Python: возвращение нескольких значений
  20. Работа с путями в Python
  21. Получение пути к текущему скрипту с помощью os
  22. Функция __init__ в Python
  23. Создание и удаление объектов
  24. Работа с необработанными строками
  25. Гибкие функции Python
  26. Операторы Splat и splatty-splat
  27. Оператор «not» в Python
  28. Проверка класса объекта
  29. Основные операции с Numpy
  30. Декораторы в Python
  31. Форматирование кода на Python
  32. Обновление ключей в Python
  33. Проверка памяти объекта
  34. Хеши в Python
  35. Работа с контекстными менеджерами
  36. Изменение списка срезами
  37. Работа с утверждениями в Python
  38. Сравнение def и lambda функций в Python
  39. Объединение списков с использованием itertools.chain
  40. Операторы объединения в Python 3.9
  41. Преобразование range в итератор
  42. Функции высшего порядка в Python
  43. Пространство имен в Python
  44. Проверка элементов списка условием
  45. Тайное преобразование типа ключа
  46. Возврат нескольких значений
  47. Создание задания в Cron

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