Курс 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. Преобразование списка в словарь через генератор
  2. Удаление эмодзи с помощью pandas
  3. Вывод с переменной через запятую
  4. Python: изменяемые и неизменяемые коллекции
  5. Переопределение метода __floordiv__
  6. Функции с дополнением
  7. Открытие и редактирование скриптов Python
  8. Работа с атрибутом dict
  9. Работа с комплексными числами в Python
  10. Списки в Python
  11. Разрешение имен в Python
  12. Docstring в Python
  13. Справка по импортированным модулям
  14. Использование подчеркивания в REPL
  15. Объединение словарей в Python
  16. Настройка логгера Logzero
  17. Получение текущей даты и времени
  18. Работа с срезами в Numpy
  19. Упрощенный вывод данных в Python
  20. Основы работы с базами данных в Python
  21. Возврат нескольких значений из функции
  22. Поиск анаграмм с Counter
  23. Метод __imod__ для Python
  24. Генерация чисел с range()
  25. Вложенные функции в Python
  26. Библиотека Emoji: использование смайлов в Python
  27. Функция reversed() в Python
  28. Работа с JSON данными в Python
  29. Работа с индексами списков
  30. Работа с файловой системой в Python
  31. Проверка типа данных
  32. Принципы LSP и ISP в Python
  33. Обмен переменными в Jupyter
  34. Объединение строк с помощью метода join
  35. Метод title() в Python
  36. Форматирование строк в Python
  37. Работа с массивами в Python
  38. Экспорт данных в файл.
  39. Форматирование строк в Python
  40. Преобразование PowerPoint в PDF.
  41. Срез в Python
  42. Избегайте двойного подчеркивания
  43. Декораторы в Python
  44. Удаление файлов и папок в Python

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