Курс 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"
- Безопасные SQL-запросы в Python 3.11
- Возврат нескольких значений
- Контекстный менеджер в Python
- Декоратор Property в Python
- Декоратор Ajax required
- Генераторы в Python
- Библиотека Emoji: использование смайлов в Python
- Определение имен функций
- Преобразование документов в PDF с помощью Spire.Office
- Функция product() из itertools
- Замеры производительности в Python
- Python 3.12: Псевдонимы типов
- Построение графиков в терминале с bashplotlib
- Работа с часовыми поясами в Python.
- Функция zip() в Python
- Defaultdict в Python
- Синхронизация доступа к ресурсам
- Мониторинг памяти с Pympler
- Создание панели меню Tkinter
- Получение списка кортежей из словаря
- Метод remove() для удаления элемента из списка
- Функции в Python
- Разделение строки с помощью split()
- Генераторы в Python
- Работа с JSON в Python
- Метод __index__ в Python
- Группировка элементов в словарь
- Определение наиболее частого элемента с помощью collections.Counter
- Непрерывная проверка в Python
- Обмен значений переменных в Python
- Работа с deque из collections
- Операции со строками в Python
- Добавление элементов в список: append() vs extend()
- Метод rsub для пользовательских чисел
- Python Менеджер контекста
- Декораторы с @wraps
- Функция findall() для поиска вхождений строки
- Просмотр внешнего файла в Python
- Проверка типа объекта в Python
- Работа с рекламными данными в Pandas
- Абстракции словарей и множеств в Python
- Бинарный поиск
- Настройка вывода в Numpy
- Работа с часовыми поясами в Python
- Структурирование именованных констант
- Вставка переменных в шаблоны Flask
- Управление мышью и клавиатурой с Pyautogui















