Курс 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. Ошибка NotImplemented в Python
  2. Метод init в Python
  3. Импорт с альтернативным именем
  4. Преобразование типов данных в set comprehension
  5. Декораторы в Python
  6. Установка пакетов с помощью pip
  7. Цикл for в Python
  8. Bootle — простой веб-фреймворк
  9. Поиск подстроки в строке
  10. Работа с YAML в Python
  11. Инверсия списка/строки в Python
  12. Метод __float__ в Python
  13. Методы работы со списками
  14. Python defaultdict добавление ключа
  15. Управление импортом в Python
  16. Компиляция регулярных выражений
  17. Модуль math: основные функции
  18. Открытие, чтение и закрытие файла
  19. Переопределение метода xor в Python
  20. Progress с библиотекой tqdm
  21. Метод join() для объединения элементов в строку.
  22. Удаление файлов в Python
  23. Группы исключений в Python
  24. Создание новых функций с помощью functools.partial
  25. Округление банкира в Python
  26. Бесконечные списки в Python
  27. Генератор списка в Python
  28. Отладка регулярных выражений в Python
  29. Создание новых списков
  30. Создание циклической ссылки
  31. Модуль xkcd: добавление юмора в Python
  32. Извлечение статей с newspaper3k
  33. Mad Libs Generator
  34. Тестирование функции сложения
  35. Метод get() в Python
  36. Сортировка данных в Python
  37. Подсчет элементов в списке с Counter
  38. Выражения-генераторы в Python
  39. Перевернуть список в Python
  40. Python: отсутствие точек с запятыми
  41. Именованные срезы в Python
  42. Создание новой даты в Python
  43. Метод count в Python: почему count(», ») возвращает 4?
  44. Измерение времени выполнения кода
  45. Декораторы в Python
  46. Удаление знаков препинания в Python

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