вызов нескольких команд Matlab из python с использованием os.system

Я просто хочу вызвать две команды Matlab из Python: первая команда просто добавляет папку и подпапки по нужному пути ( addpath(genpath('c:/file1/file2')) ), а вторая команда вызывает функцию, которую я хочу использовать ( myfunction.m ).

Я всегда использовал os.system("command"), когда мне нужно было вызвать функцию, и os.system("command1 | command2"), например, когда я хотел вызвать две функции, поэтому я попробовал:

os.system("matlab -r addpath(genpath('c:/file1/file2')) | matlab -r myfunction") 

Но, очевидно, это открывает два окна Matlab, первое для первой команды и второе для второй команды. Я хочу вызвать обе команды в одном окне, одну за другой. Однако, если я попытаюсь просто:

os.system("matlab -r addpath(genpath('c:/file1/file2')) -r myfunction")

это не работает... Он выполняет первую команду ( addpath ), но не вызывает функцию....

Что я делаю не так?? Любая идея о том, как это сделать ?? Я прочитал много сообщений, но они не очень помогли, даже если это очень простой случай.

Заранее спасибо ребята!! Я очень ценю вашу помощь


person anna    schedule 08.09.2014    source источник


Ответы (1)


Идея состоит в том, чтобы выполнить следующее:

matlab.exe -r "addpath('c:\some\folder'); someFunction(); quit;"

Теперь вам нужно вставить это в вызов os.system и правильно экранировать кавычки...

Например, вы можете попробовать:

>>> os.system("matlab.exe -nosplash -nodesktop -wait -r \"addpath('c:\\some\\folder'); someFunction(); quit();\"")

(обратите внимание, что обратная косая черта и двойные кавычки экранированы, плюс я добавил параметр -wait, чтобы команда не возвращалась, пока MATLAB не завершит выполнение).

person Amro    schedule 08.09.2014
comment
Большое спасибо @Amro!! Это отлично работает! :) Это дает командное окно Matlab, отличное от обычного, но это не проблема :) - person anna; 08.09.2014
comment
@ user2252592: это опция -nodesktop, вы можете удалить ее, если хотите. Вот страницы документации для всех параметров командной строки: mathworks.com/help/matlab /ref/matlabwindows.html, mathworks.com/help/matlab /ref/matlabunix.html - person Amro; 08.09.2014