code: def load_dictionary(filename):
      
      filename = osp.abspath(filename)
      old_cwd = getcwd()
      tmp_folder = tempfile.mkdtemp()
      os.chdir(tmp_folder)
      data = None
      error_message = None
      try:
          with tarfile.open(filename, "r") as tar:
              tar.extractall()
          pickle_filename = glob.glob('*.pickle')[0]
          # 'New' format (Spyder >=2.2 for Python 2 and Python 3)
          with open(pickle_filename, 'rb') as fdesc:
              data = pickle.loads(fdesc.read())
          saved_arrays = {}
          if load_array is not None:
              # Loading numpy arrays saved with np.save
              try:
                  saved_arrays = data.pop('__saved_arrays__')
                  for (name, index), fname in list(saved_arrays.items()):
                      arr = np.load( osp.join(tmp_folder, fname) )
                      if index is None:
                          data[name] = arr
                      elif isinstance(data[name], dict):
                          data[name][index] = arr
                      else:
                          data[name].insert(index, arr)
              except KeyError:
                  pass
      # Except AttributeError from e.g. trying to load function no longer present
      except (AttributeError, EOFError, ValueError) as error:
          error_message = to_text_string(error)
      # To ensure working dir gets changed back and temp dir wiped no matter what
      finally:
          os.chdir(old_cwd)
          try:
              shutil.rmtree(tmp_folder)
          except OSError as error:
              error_message = to_text_string(error)
      return data, error_message
docs: Load dictionary from .spydata file