2012-11-24 3 views
4

Je suis en train d'exécuter un programme Java à partir d'un programme python:Comment exécuter un programme externe

subprocess.Popen(["java -mx256m -jar /sphinx4-1.0beta5/bin/HelloWorld.jar"], shell=True) 

mais il échoue avec cette erreur:

Error: Unable to access jarfile /sphinx4-1.0beta5/bin/HelloWorld.jar 

i besoin d'être dans un répertoire spécifique: /home/karen/sphinx4-1.0beta-src, pour exécuter la commande: "java -mx256m -jar /sphinx4-1.0beta5/bin/HelloWorld.jar" Mais je ne sais pas comment faire. J'ai besoin que mon programme python l'exécute!

+0

Pourquoi ne pas simplement écrire le chemin complet du fichier dans votre script? – alexvassel

+1

'-mx256m' devrait être' -Xmx256m'. –

+0

Merci, @AndrewThompson votre commentaire était très utile! – karensantana

Répondre

6

, utilisez le paramètre CWD

subprocess.Popen(["java -mx256m -jar ../sphinx4-1.0beta5/bin/HelloWorld.jar"], cwd=r'path', shell=True) 

http://docs.python.org/2/library/subprocess.html « Si CWD est None, le répertoire courant de l'enfant sera changé en CWD avant son exécution. Notez que ce répertoire est pas considéré lors de la recherche de l'exécutable, afin vous ne pouvez pas spécifier le chemin du programme par rapport à cwd. "

+0

umm! Quelque chose d'étrange est arrivé! J'ai eu cette erreur: 'OSError: [Errno 2] Aucun fichier ou répertoire: 'home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5 /' ' – karensantana

+0

Je dois aussi spécifier le chemin absolu vers la commande ? – karensantana

+0

je l'ai corrigé en changeant la commande: 'subprocess.Popen ([" java -Xmx256m -jar bin/HelloWorld.jar "], cwd = r '/ home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5 /' , shell = Vrai) ' – karensantana

0

Votre problème est probablement lié à votre chemin d'accès au fichier JAR. Votre code devrait probablement appeler/home/Karen/sphynx4-1beta-src dans votre appel popen. Ce n'est pas une solution qui fonctionnera sur un système différent, à moins que le fichier ne soit dans le même chemin absolu.

Questions connexes