Я работаю со сценарием, который будет использовать модуль scipy.io для загрузки файла .mat из matlab и получения соответствующей информации из данных, чтобы, в конечном итоге, вывести электронную таблицу в стандартизированном формате.
Затем, мой первый шаг - настроить класс, который откроет файл и получит все необходимые данные, чтобы я мог затем передать экземпляр другому классу / функции для генерации выходного файла.
Сейчас я подхожу к коду, назначая по одному атрибуту за раз, но я хотел бы знать, есть ли лучший способ сделать это без необходимости хранить все данные в экземпляре или открывать файл несколько раз .
class Logfile():
"""
Class to hold the logfile object. It will open and
parse the original .mat file, keeping the relevant info
as attributes
"""
def __init__(self, path: str):
self.path = path
def initialize(self) -> np.array:
data_struct = scipy.io.loadmat(self.path)['Data']
return data_struct
@property
def subject_id(self):
struct = self.initialize()
subject_array = struct['SubjectID']
sub_id = subject_array[0][0][0]
return sub_id
Для простоты пример кода показывает только один атрибут, но было бы еще 3 или 4 атрибута, которые необходимо взять из разных частей структуры data_structure, предоставляемой функцией loadmat. Есть ли более эффективный способ сделать это?