Курс 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. Функция reversed() в Python
  2. Получение комбинаций в Python
  3. Экранирование символов в Python
  4. Операторы объединения в Python 3.9
  5. Хэш-функции в Python
  6. Работа с массивами в Numpy
  7. Вложенные функции в Python
  8. Подсчет количества элементов в списке
  9. Удаление специальных символов с помощью re.sub
  10. Простой калькулятор Python
  11. Применение функции map() с лямбда-функциями
  12. Измерение времени выполнения кода
  13. Создание графиков в терминале
  14. Загрузка постов Instagram
  15. Возврат нескольких значений
  16. Magic Commands — улучшение работы с Python
  17. Декораторы в Python
  18. Создание коллекций из генератора
  19. Создание вложенных циклов for
  20. Метод rxor для операции побитового исключающего «или»
  21. Модуль antigravity: генерация координат
  22. globals и locals
  23. Умножение строк и списков
  24. Срезы в Python
  25. Преобразование данных в Python
  26. Метод __irshift__ для Python
  27. Базовые объекты Python
  28. Основы работы с базами данных в Python
  29. Удаление дубликатов из списка
  30. Циклы for в Python
  31. Изменяемые и неизменяемые объекты
  32. Основы работы с os
  33. Функциональное программирование в Python
  34. Defaultdict в Python
  35. Метод clear для коллекций
  36. Запрос DELETE с библиотекой requests
  37. Оператор морж в Python 3.8
  38. Обработка элементов в Python
  39. Чтение и запись TOML-конфигов
  40. Запуск внешнего кода в Jupyter
  41. Объединение словарей в Python
  42. Избегание изменяемых аргументов
  43. Функции в одну строку
  44. Анализ текста на русском языке с помощью Pymystem3
  45. Аргумент по умолчанию

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