Python利用os.system运行MATLAB代码
by HPC_ZY
由于剧情需要,要在python代码中运行一个MATLAB的文件。于是选择os.system,靠命令行运行.m文件。但是在过程中遇到一些问题,总结并将成功案例分享于此。
一、使用命令行
作为非计算机专业出身,今天才学会命令行,不排除有跟我一样刚接触的,所以也写在这里。
比如用命令行运行TIM软件,
1)win+R 弹出运行窗口,输入cmd打开命令行界面
2)输入程序位置+可执行文件,如D:\TIM\Bin\QQScLauncher.exe
TIM它就打开了
二、用命令行运行MATLAB代码
能运行TIM,它就也能运行MATLAB,而且MATLAB还专门有一套调用方式,可以在不打开MATLAB可视化界面的情况下,运行或调试你的**.m**文件。
今天才知道命令行的魅力,羡慕Linux大佬。
比如,我们在桌面新建一个文件夹命为“test”,然后写一个“test.m”文件,如下:
% 建立一个文本,写入一字符串
str = 'HPC_ZY';
fp = fopen('test.txt','w');
fprintf(fp, '%s', str);
fclose(fp);
运行命令行,输入以下指令
cd C:\Users\Administrator\Desktop\test
matlab -nojvm -nodisplay -nodesktop -r "test"
然后就在路径下生成一个txt文件咯。
注:
(1)指令中的空格不能省略,
(2)也可以直接输入 matlab -r "test"
,但这样就会启动MATLAB,变得更慢。
(3)更多高端操作这里就不写了
三、用Python启动命令行
利用os库里的 os.system()
就能运行命令行了。
同样的例子,运行TIM
import os
comm = "D:\TIM\Bin\QQScLauncher.exe" # 指令
ret = os.system(comm) # 运行指令
四、Python利用命令行运行M文件
还是上面那个例子,
import os
comm1 = "cd C:\\Users\\Administrator\\Desktop\\test\\" # 指令1
comm2 = "matlab -nojvm -nodisplay -nodesktop -r \"test\"" # 指令2
comm = comm1 + "&&" + comm2 # 指令合并
ret = os.system(comm) # 运行指令
注:
(1)多行指令可以使用&&
或;
连接,如上代码。
(2)本人是windows系统,发现只有用&&
才能正常运行
(3)相关联的多行指令,需在一起运行,若像下面这样就达不到预期的效果
## 这样是不能成功的哦
import os
comm1 = "cd C:\\Users\\Administrator\\Desktop\\test\\" # 指令1
comm2 = "matlab -nojvm -nodisplay -nodesktop -r \"test\"" # 指令2
ret = os.system(comm1) # 运行指令1
ret = os.system(comm2) # 运行指令2
五、其他
1、第一次使用命令行,欢迎指出问题
2、在看一些大佬们在软件安装教程、环境配置教程、操作命令行或分享代码的时候,关于文件路径的地方都会打码。我没有,不知道会不会出事求解答