Я пытаюсь написать менеджер контекста с contextlib.contextmanager
.Следующее работает как ожидалось:
from pathlib import Path
from contextlib import contextmanager
@contextmanager
def Dir(path):
path = Path(path).expanduser().resolve()
try:
path.mkdir(parents=True, exist_ok=True)
yield path
except PermissionError as err:
print(err)
raise err
Однако, если я хочу, чтобы оно регистрировало и подавляло исключение, удаляя строку raise err
, я получаю следующую ошибку:
/usr/lib64/python3.7/contextlib.py in __enter__(self)
112 return next(self.gen)
113 except StopIteration:
--> 114 raise RuntimeError("generator didn't yield") from None
115
116 def __exit__(self, type, value, traceback):
RuntimeError: generator didn't yield
Чтоя пропустил?
PS: мне известен этот старый вопрос, но он не решил мою проблему.