我通过subprocess模块将一个小的MATLAB脚本与Python连接起来.如下:
cmd='(matlab -nosplash -nodesktop -r "optimizer;quit;")'
p = subprocess.Popen(cmd,stdin=None,stdout=None,shell=True)
#subprocess.Popen.wait(p)
#p.wait()
print "DONE?"
Run Code Online (Sandbox Code Playgroud)
但是即使在MATLAB启动之前,"DONE"也正在打印!我的整个代码都因此而破裂.
我试过了:
p.wait()和subprocess.Popen.wait.两者都不起作用.我错过了什么?
对我来说很好:
import subprocess
retcode = subprocess.call(["matlab", "-nosplash", "-nodesktop", "-r", "quit;"])
print "DONE", retcode
Run Code Online (Sandbox Code Playgroud)
相应地拆分命令参数,仅使用您实际需要的选项(shell=True例如,不需要),使用直接执行您之后(call)的函数,即调用并等待完成.
根据您的安装(请参阅http://www.mathworks.com/help/matlab/ref/matlabwindows.html),Matlab可能会以立即退出的方式启动.要处理它,请在参数列表中添加"-wait".
使用"-wait"标志启动Matlab.从文件:
"MATLAB由一个单独的启动程序启动,通常启动MATLAB然后立即退出.使用此选项告诉启动程序在MATLAB终止之前不要退出.当您需要在脚本中处理MATLAB的结果时,此选项很有用.使用此选项调用MATLAB会阻止脚本继续运行,直到生成结果."
| 归档时间: |
|
| 查看次数: |
1220 次 |
| 最近记录: |