2014-04-17 205 views
4

我創造各種MATLAB的.m檔案與Python,然後使用子進程運行它們。當文件完成後,我想將其刪除:Matlab的返回退出代碼立即

command = ['C:\\MatlabR2012b\\bin\\matlab.exe', '-nodesktop', '-nosplash', '-r', 'mfile'] 
    matlab = subprocess.Popen(command) # launch matlab with m file 
    matlab.wait() # wait for matlab to finish before deleting .m file 
    print "delete" 
    os.remove(self.filename) 

的問題是,matlab.wait()永遠等待,因爲MATLAB立即返回退出代碼0。是否有另一種方法來檢查matlab是否完成?

+1

無關:你可以使用的''而不是POPEN(..)'subprocess.check_call(命令)等待()'。如果'command'以非零狀態退出,前者也會引發異常。 – jfs

回答

4

在Windows上,有bin\matlab.exebin\win32\matlab.exe(或bin\win64\matlab.exe)。前者僅僅是後者的包裝,幾乎立即退出。

您可以直接致電bin\win32\matlab.exe或致電bin\matlab.exe時使用-wait option

+0

你先生,是我永恆的英雄! :D我永遠找不到那一個。 – Pphoenix

+0

@Pphoenix:很高興能幫到你! –