Skip to main content
`Ctrl`+`K`
scipy.io.matlab.

# varmats_from_mat

scipy.io.matlab.varmats_from_mat(file_obj)

  Pull variables out of mat 5 file as a sequence of mat file objects.

  This can be useful with a difficult mat file, containing unreadable variables. This routine pulls the variables out in raw form and puts them, unread, back into a file stream for saving or reading. Another use is the pathological case where there is more than one variable of the same name in the file; this routine returns the duplicates, whereas the standard reader will overwrite duplicates in the returned dictionary.

  The file pointer in file_obj will be undefined. File pointers for the returned file-like objects are set at 0.

  Parameters:
    file_obj file-like

      file object containing mat file

  Returns:
    named_mats list

      list contains tuples of (name, BytesIO) where BytesIO is a file-like object containing mat file contents as for a single variable. The BytesIO contains a string with the original header and a single var. If `var_file_obj` is an individual BytesIO instance, then save as a mat file with something like `open('test.mat', 'wb').write(var_file_obj.read())`

  Examples

      >>> import scipy.io
      >>> import numpy as np
      >>> from io import BytesIO
      >>> from scipy.io.matlab._mio5 import varmats_from_mat
      >>> mat_fileobj = BytesIO()
      >>> scipy.io.savemat(mat_fileobj, {'b': np.arange(10), 'a': 'a string'})
      >>> varmats = varmats_from_mat(mat_fileobj)
      >>> sorted([name for name, str_obj in varmats])
      ['a', 'b']