Python 从命令行运行matlab脚本后如何退出?
这是我的python代码Python 从命令行运行matlab脚本后如何退出?,python,matlab,Python,Matlab,这是我的python代码 DosCmd = 'matlab -wait -automation -nosplash -r "run \'' + to_run + "'\"" os.system(DosCmd) curve_file = open('curve/'+str(index)+'.curve','r') 我在python脚本中运行了一个.m文件,它工作正常,但在执行了.m文件之后,它被困在了os.system(DosCmd)中。 要使python运行以下代码,我必须关闭此窗口: 由
DosCmd = 'matlab -wait -automation -nosplash -r "run \'' + to_run + "'\""
os.system(DosCmd)
curve_file = open('curve/'+str(index)+'.curve','r')
我在python脚本中运行了一个.m文件,它工作正常,但在执行了.m文件之后,它被困在了os.system(DosCmd)
中。
要使python运行以下代码,我必须关闭此窗口:
由于这部分代码处于循环中,因此它确实让我感到不安。
我在网上发现有人说matlab可以在执行.m文件后自动退出,但我的却没有。有人会告诉我我做错了什么,或者我应该做什么吗?Thx 添加对执行的MATLAB代码的
exit
调用
DosCmd = 'matlab -wait -automation -nosplash -r "run \'' + to_run + "', exit\""
您的引用看起来有点不可靠,但您只需要在-r
参数中传递的命令末尾添加,退出
顺便说一句,使用subprocess
会容易得多,这样您就可以让subprocess
为您进行报价
subprocess.check_call(['matlab', '-wait', '-automation', '-nosplash',
'-r', 'run \' + to_run + \', exit'])
将命令exit
添加到脚本的最后一行。
-wait命令行开关意味着启动器应用程序在matlab退出之前不会关闭。如果您确实让python处理ML输出,那么-wait是正确的,否则就去掉-wait
另外,您确定每次都要在循环中启动新的matlab会话吗?Matlab公开了DDE功能,允许您打开一个实例并发送命令
或者,您可以查看PyMat或mlabwrap等,这是一个现有的python到matlab桥接库。尝试使用中断键CTRL+C
您是否尝试过exit
?Thx,它可以工作!还有一个问题,有没有一种方法可以“重用”matlab,而不是一次又一次地启动它?我想JonB已经很好地解决了这个问题<代码>mlabwrap
对我来说很不错。您可以使用MATLAB作为COM服务器,但我怀疑mlabwrap
会更干净。谢谢!我需要“等待”,因为ML输出是我下一步要处理的。看起来PyMat和mlabwrap已经好几年没有更新了…但我使用的是python3…@laike9m:使用COM接口:(确保您之前至少运行过一次matlab-regserver
)@laike9m:只需从matlab外部的控制台运行matlab.exe-regserver
。它将MATLAB注册为COM服务器。如果你还没有这样做,你只需要做一次