code: def chdir(new_dir):
      
      # On busy filesystems can have issues accessing main directory. Allow retries
      num_tries = 0
      max_tries = 5
      cur_dir = None
      while cur_dir is None:
          try:
              cur_dir = os.getcwd()
          except OSError:
              if num_tries > max_tries:
                  raise
              num_tries += 1
              time.sleep(2)
      safe_makedir(new_dir)
      os.chdir(new_dir)
      try:
          yield
      finally:
          os.chdir(cur_dir)
docs: Context manager to temporarily change to a new directory.
  
      http://lucentbeing.com/blog/context-managers-and-the-with-statement-in-python/