Курс 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. Инициализация переменных
  3. Python Translator: создание локальных переводчиков
  4. Руководство по использованию Colorama
  5. Отрицательные индексы списков
  6. Разработка игры Pong с turtle
  7. Импорт объектов из модулей
  8. Управление виртуальными окружениями в Python
  9. Удаление элементов из списка в Python
  10. Метод get() в Python
  11. Именование столбцов в Python с pandas
  12. Метод title() в Python
  13. Генераторы в Python
  14. Списки в Python: основы
  15. Прокачанный трейсинг ошибок
  16. Работа с комплексными числами
  17. Многострочные комментарии в Python
  18. Получение идентификатора объекта в памяти
  19. Лямбда-функции в Python
  20. Разделение строк в Python
  21. Удаление элементов из списка в Python.
  22. Многострочные комментарии в Python
  23. Создание списка через итерацию
  24. Функции map() и reduce() в Python
  25. Преобразование символов в нижний регистр
  26. Изменение переменной в Python: nonlocal
  27. Работа с срезами в Python
  28. Реализация операции -= для пользовательского класса
  29. Основы Python
  30. Инвертирование словаря
  31. Метод getitem для доступа к элементам последовательности
  32. Удаление символа из строки
  33. Экранирование символов в Python
  34. Шаблоны Flask: условия и циклы
  35. Скрытие вывода данных
  36. Виртуальное окружение Python
  37. Оптимизация гиперпараметров в Python
  38. Генераторы в Python
  39. Enum в Python: создание и использование перечислений
  40. Создание комплексных чисел
  41. Выбор редактора кода.
  42. Блок try…finally в Python
  43. Регистрация на хакатоне
  44. Обновление и получение данных в SQLite
  45. Python 3.12: переиспользование кавычек

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