code: def _extract_to_tempdir(archive_filename):
      
      if not os.path.exists(archive_filename):
          raise Exception("Archive '%s' does not exist" % (archive_filename))
  
      tempdir = tempfile.mkdtemp(prefix="metaextract_")
      current_cwd = os.getcwd()
      try:
          if tarfile.is_tarfile(archive_filename):
              with tarfile.open(archive_filename) as f:
                  f.extractall(tempdir)
          elif zipfile.is_zipfile(archive_filename):
              with zipfile.ZipFile(archive_filename) as f:
                  f.extractall(tempdir)
          else:
              raise Exception("Can not extract '%s'. "
                              "Not a tar or zip file" % archive_filename)
          os.chdir(tempdir)
          yield tempdir
      finally:
          os.chdir(current_cwd)
          shutil.rmtree(tempdir)
docs: extract the given tarball or zipfile to a tempdir and change
      the cwd to the new tempdir. Delete the tempdir at the end