使用os.system从python调用几个matlab命令

时间:2014-09-08 13:13:05

标签: python matlab command os.system

我只想从Python调用两个matlab命令:第一个命令只是添加所需路径的文件夹和子文件夹(addpath(genpath('c:/file1/file2'))),而第二个命令调用我想要使用的函数({{1 })。

当我需要调用函数时我总是使用myfunction.m而当我想调用两个函数时我os.system("command"),所以我试过了:

os.system("command1 | command2")

但显然这会打开两个matlab窗口,第一个用于第一个命令,第二个用于第二个命令。我想要的是在同一个窗口中一个接一个地调用这两个命令。但是,如果我简单地尝试:

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

它不起作用......它执行第一个命令(os.system("matlab -r addpath(genpath('c:/file1/file2')) -r myfunction") )但它没有调用函数....

我做错了什么?有关如何做到这一点的任何想法?我阅读了很多帖子,但它们并没有很大帮助,即使这是一个非常简单的案例。

先谢谢你们!我非常感谢你的帮助

1 个答案:

答案 0 :(得分: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完成执行之前命令不会返回。)