Курс 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. Работа с collections в Python
  2. Извлечение статей с newspaper3k
  3. Генераторы списков в Python
  4. Обработка исключения UnboundLocalError
  5. Проверка элементов списка условием
  6. Установка Python3.7 и PIP
  7. Python Метод del.
  8. Регулярные выражения в Python
  9. Оптимизация памяти с __slots__
  10. Объединение Python и Shell
  11. Явный импорт переменных
  12. Удаление файлов с shutil.os.remove()
  13. Расчет времени выполнения
  14. Сокращение ссылок с pyshorteners
  15. Применение функции к каждому элементу списка
  16. Поиск индекса элемента в списке
  17. Лямбда-функции для min/max
  18. Работа с набором данных CIFAR10 в PyTorch
  19. Генерация UUID в Python
  20. Создание копии списка в Python
  21. Извлечение новостей с помощью newspaper3k
  22. Python enumerate() для работы с индексами
  23. Прокачанный трейсинг ошибок
  24. Метод pop() списка
  25. Работа с итераторами в Python
  26. Поиск уникальных элементов строкой в Python
  27. Разделение строки с регулярными выражениями
  28. Модуль os: работа с файлами и папками
  29. Мощь вложенных функций в Python
  30. Проверка однородности элементов списка
  31. Библиотека schedule: планировщик задач
  32. Работа с прокси в Python
  33. Экспорт внешнего файла с помощью writefile
  34. Обработка ошибок в JSON данных
  35. Передача параметров в Python
  36. Объединение словарей в Python
  37. Метод rename() для переименования файлов и каталогов
  38. Метод index() в Python
  39. Python: цикл for и оператор присваивания
  40. Списковый компрехеншен.
  41. Python itertools combinations() — группировка элементов
  42. Создание панели меню Tkinter
  43. Создание и удаление объектов
  44. Beautiful Soup — извлечение данных из HTML
  45. Подсчет количества элементов в списке
  46. Работа с комплексными числами
  47. Поиск email
  48. Генераторы в Python
  49. Поиск индекса элемента

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