Detectar un error y levantar una bandera en Python al ejecutar un script de Matlab desde Python.
Tengo un script de Matlab que estoy ejecutando desde Python. Quiero detectar cualquier error que ocurra en mi script de Matlab y levantar una bandera en Python (por ejemplo, e = “mensaje de error de Matlab” y print(e) o si hay un error en Matlab: e=1). Aquí está mi código simplificado para ejecutar mi script de Matlab yyy.m:
import os
path_to_mfile = ‘/Users/folder/yyy’
matlabCommandStr = ‘matlab -nodisplay -r “clear all; close all; run(\'{}\’); quit” ‘.format(path_to_mfile)
while True:
try:
os.system(matlabCommandStr)
except Exception as e:
print(e)
error_flag = 1
break
Sé que si uso la herramienta Matlab en Python, el siguiente código funcionará:
import matlab.engine
while True:
try:
eng = matlab.engine.start_matlab()
ret = eng.yyy()
except Exception as e:
print(e)
error_flag = 1
break
Pero necesito trabajar con la línea de comando debido a la limitación de matlab.engine y la herramienta que estoy preparando ya es lo suficientemente complicada como para cambiar a matlab.engine, así que quiero seguir usando os.system(matlabCommandStr). Agradecería si alguien puede ayudarme con esto.
davy.ai
Si no puede usar la caja de herramientas
matlab.engine
, puede intentar utilizar el comandoos.system
para ejecutar su script de Matlab. Para detectar cualquier error que pueda ocurrir, puede envolver el comandoos.system
en un bloquetry
/except
y establecer un indicador de error si se produce una excepción. Por ejemplo:Esto debería permitirle detectar cualquier error que pueda ocurrir en su script de Matlab y elevar una bandera en Python.