examples/python/mycontext.py

import os
from contextlib import contextmanager
import tempfile
import shutil

@contextmanager
def cwd(path):
    '''
    # Usage:
    from mycontext import cwd
    with cwd(other_dir):
        # do something in the other_dir


    # Demo:
    from mycontext import cwd
    import os

    print(os.getcwd())
    with cwd('ansible'):
        print(os.getcwd())
    print(os.getcwd())
    '''

    oldpwd = os.getcwd()
    os.chdir(path)
    try:
        yield
    finally:
        os.chdir(oldpwd)

@contextmanager
def tmpdir():
    '''
    # Usage:
    from  import tmpdir
    with tmpdir() as dd:
        # store files in dd
        # the whole directory will be gone when the 'with' statement ends


    # Demo
    from mycontext import tmpdir
    import os

    with tmpdir() as d:
        print(d)
        os.system("touch " + d + "/abc")
        os.system("ls -l /tmp/")
        os.system("ls -l " + d)
    '''

    dd = tempfile.mkdtemp()
    try:
        yield dd
    finally:
        shutil.rmtree(dd)