es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Si no puede usar la caja de herramientas matlab.engine, puede intentar utilizar el comando os.system para ejecutar su script de Matlab. Para detectar cualquier error que pueda ocurrir, puede envolver el comando os.system en un bloque try/except y establecer un indicador de error si se produce una excepción. Por ejemplo:

    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
    

    Esto debería permitirle detectar cualquier error que pueda ocurrir en su script de Matlab y elevar una bandera en Python.

Comments are closed.