Context manager that returns a value
examples/advanced/my_tempdir.py
from contextlib import contextmanager import time import random import os import shutil @contextmanager def my_tempdir(): print("start return") tmpdir = '/tmp/' + str(time.time()) + str(random.random()) os.mkdir(tmpdir) try: yield tmpdir finally: shutil.rmtree(tmpdir) print("end return")
examples/advanced/use_my_tempdir.py
import os from my_tempdir import my_tempdir with my_tempdir() as tmp_dir: print(f"In return context with {tmp_dir}") with open(tmp_dir + '/data.txt', 'w') as fh: fh.write("hello") print(os.listdir(tmp_dir)) print('') print(tmp_dir) print(os.path.exists(tmp_dir))
start return In return context with /tmp/1578211890.49409370.6063140788762365 ['data.txt'] end return /tmp/1578211890.49409370.6063140788762365 False