Курс 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"
- Импорт модулей и пакетов в Python
- Декораторы с @wraps
- Генерация ключей RSA
- Работа с WindowsPath()
- Выборка чисел
- Метод __irshift__ для Python
- Получение текущего времени в Python
- Создание функций высшего порядка
- Работа с комплексными числами в Python
- Проверка запуска скрипта или импорта модуля
- Отображение HTML кода в Python
- Непрерывная проверка в Python
- Обработка исключений в Python
- Создание даты из строки ISO
- Работа с коллекциями Python
- Значения по умолчанию в Python
- Работа с модулем glob в Python
- Объединение словарей в Python
- Функция enumerate() в Python
- Реверс строки в Python
- Комментарии в Python.
- Назначение максимального и минимального значения переменной в Python.
- Подсчет элементов с помощью Counter из collections
- Генераторы в Python
- Выражения-генераторы в Python
- Отрицательные индексы списков в Python
- Нан-рефлексивность в Python
- Простой калькулятор Python
- Возвращение нескольких значений через кортеж или класс
- Тестирование с unittest
- Перемешивание списка с shuffle()
- ChainMap.new_child() — добавление нового словаря
- Создание генераторов
- Декоратор проверки активности
- Проверка кортежей.
- Оператор «or» в Python
- Профилирование кода
- Логирование в Python
- Открытие и запись файлов
- Работа с enumerate()
- Кортеж в Python: создание, доступ, изменение
- Разработка игры Pong с turtle
- Переопределение метода __pow__
- Создание циклической ссылки















