This context manager restores the value of the current working
directory (cwd) after the enclosed code block completes or raises an
exception. If a directory name is supplied to the context manager then
the cwd is changed prior to running the code block.
from __future__ import with_statement # only for python 2.5 import contextlib import os @contextlib.contextmanager def chdir(dirname=None): curdir = os.getcwd() try: if dirname is not None: os.chdir(dirname) yield finally: os.chdir(curdir)