Курс 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"
- Работа с collections в Python
- Извлечение статей с newspaper3k
- Генераторы списков в Python
- Обработка исключения UnboundLocalError
- Проверка элементов списка условием
- Установка Python3.7 и PIP
- Python Метод del.
- Регулярные выражения в Python
- Оптимизация памяти с __slots__
- Объединение Python и Shell
- Явный импорт переменных
- Удаление файлов с shutil.os.remove()
- Расчет времени выполнения
- Сокращение ссылок с pyshorteners
- Применение функции к каждому элементу списка
- Поиск индекса элемента в списке
- Лямбда-функции для min/max
- Работа с набором данных CIFAR10 в PyTorch
- Генерация UUID в Python
- Создание копии списка в Python
- Извлечение новостей с помощью newspaper3k
- Python enumerate() для работы с индексами
- Прокачанный трейсинг ошибок
- Метод pop() списка
- Работа с итераторами в Python
- Поиск уникальных элементов строкой в Python
- Разделение строки с регулярными выражениями
- Модуль os: работа с файлами и папками
- Мощь вложенных функций в Python
- Проверка однородности элементов списка
- Библиотека schedule: планировщик задач
- Работа с прокси в Python
- Экспорт внешнего файла с помощью writefile
- Обработка ошибок в JSON данных
- Передача параметров в Python
- Объединение словарей в Python
- Метод rename() для переименования файлов и каталогов
- Метод index() в Python
- Python: цикл for и оператор присваивания
- Списковый компрехеншен.
- Python itertools combinations() — группировка элементов
- Создание панели меню Tkinter
- Создание и удаление объектов
- Beautiful Soup — извлечение данных из HTML
- Подсчет количества элементов в списке
- Работа с комплексными числами
- Поиск email
- Генераторы в Python
- Поиск индекса элемента















