2014-09-08 1 views
0

Je veux juste appeler deux commandes matlab de Python: la commande fist ajoute juste le dossier et les sous-dossiers du chemin désiré (addpath(genpath('c:/file1/file2'))), tandis que la seconde commande appelle la fonction que je veux à utiliser (myfunction.m).appeler plusieurs commandes matlab de python en utilisant os.system

J'ai toujours utilisé os.system("command") quand je avais besoin d'appeler une fonction et os.system("command1 | command2") quand je voulais appeler deux fonctions, par exemple, j'ai donc essayé:

os.system("matlab -r addpath(genpath('c:/file1/file2')) | matlab -r myfunction") 

Mais évidemment, cela ouvre deux fenêtres de Matlab, le premier pour le premier commandement et le second pour le second commandement. Ce que je veux, c'est appeler les deux commandes dans la même fenêtre, l'une après l'autre. Cependant, si j'essaie simplement:

os.system("matlab -r addpath(genpath('c:/file1/file2')) -r myfunction") 

ça ne fonctionne pas ... Il effectue la première commande (addpath), mais il ne remet pas la fonction ....

Ce que je fais mal ?? Une idée sur la façon de faire ça ?? J'ai lu beaucoup de messages mais ils n'étaient pas très utiles, même si c'est un cas très simple.

Merci d'avance les gars !! Je vous remercie de votre aide

Répondre

1

L'idée est d'exécuter ce qui suit:

matlab.exe -r "addpath('c:\some\folder'); someFunction(); quit;" 

Maintenant, vous devez brancher que dans un appel os.system, et échapper à bien des guillemets ...

Par exemple, vous pouvez essayer:

>>> os.system("matlab.exe -nosplash -nodesktop -wait -r \"addpath('c:\\some\\folder'); someFunction(); quit();\"") 

(notez que antislashs et doubles citations sont échappés, plus j'ajouté l'option -wait de telle sorte que le c commande ne retourne pas tant que MATLAB n'a pas terminé l'exécution).

+0

Merci beaucoup @Amro !! Cela fonctionne parfaitement! :) Il donne une fenêtre de commande matlab différente de la normale, mais ce n'est pas un problème :) – anna

+0

@ user2252592: c'est l'option '-nodesktop', vous pouvez le supprimer si vous le souhaitez. Voici les pages de documentation pour toutes les options de ligne de commande: http://www.mathworks.com/help/matlab/ref/matlabwindows.html, http://www.mathworks.com/help/matlab/ref/matlabunix.html – Amro

Questions connexes