我只想从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")
)但它没有调用函数....
我做错了什么?有关如何做到这一点的任何想法?我阅读了很多帖子,但它们并没有很大帮助,即使这是一个非常简单的案例。
先谢谢你们!我非常感谢你的帮助
答案 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完成执行之前命令不会返回。)