Загружаем изображение…

Как открывать любое количество ресурсов безопасно и динамически?



Python даёт для этого contextlib.ExitStack — контекстный менеджер, который собирает другие контекстные менеджеры динамически.

Открываем неизвестное количество файлов:
from contextlib import ExitStack

files = ["a.txt", "b.txt"]

with ExitStack() as stack:
handlers = [stack.enter_context(open(f)) for f in files]


Все файлы гарантированно закроются, даже если их список приходит из конфига, API или собирается по условиям.

Можно комбинировать разные контексты:
with ExitStack() as stack:
db = stack.enter_context(connect_db())
lock = stack.enter_context(threading.Lock())
tmp = stack.enter_context(tempfile.TemporaryDirectory())


Инструмент, который упрощает реализацию пайплайнов, API-хендлеров, CLI-утилит и систем с ресурсами.

Python Ready | #совет
Просмотры: 182
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти