2008-11-18 3 views
3

Je suis familier avec l'utilisation du os.system pour exécuter à partir de la ligne de commande. Cependant, j'aimerais pouvoir exécuter un fichier jar depuis l'intérieur d'un dossier spécifique, par exemple. mon dossier 'test'. C'est parce que mon pot (situé dans mon dossier 'test') nécessite un fichier à l'intérieur de mon dossier 'test'. Alors, comment pourrais-je écrire une fonction dans mon script qui fait ce qui suit: c:\test>java -jar run_this.jar required_parameter.ext? Je suis un débutant python donc les détails sont grandement appréciés. Merci d'avance.Comment puis-je obtenir mon script python (version 2.5) pour exécuter un fichier jar dans un dossier au lieu de la ligne de commande?

+0

Essayez de fournir les parties de votre script qui ne fonctionnent pas. Pas tout, mais un morceau de code qui illustre votre problème. –

Répondre

5

Voici un petit script pour vous aider à démarrer. Il y a des façons de le rendre «meilleur», mais ne pas connaître toute la portée de ce que vous essayez d'accomplir devrait suffire.

import os 

if __name__ == "__main__": 
    startingDir = os.getcwd() # save our current directory 
    testDir = "\\test" # note that \ is windows specific, and we have to escape it 
    os.chdir(testDir) # change to our test directory 
    os.system("java -jar run_this.jar required_paramter.ext") 
    os.chdir(startingDir) # change back to where we started 
+1

ce code fonctionne très bien :) merci! –

1

En général: Utilisez os.chdir pour modifier le répertoire du processus parent, puis os.system pour exécuter le fichier jar. Si vous avez besoin de garder le répertoire de travail de Python stable, vous devez retourner au répertoire de travail d'origine - vous devez l'enregistrer avec os.getcwd().

Sous Unix: créez explicitement un processus fils avec os.fork. Dans le parent, attendez l'enfant avec os.waitpid. Dans l'enfant, utilisez os.chdir, puis os.exec pour lancer java.

+0

Pourquoi os.system de préférence à subprocess.Popen? –

+0

Personnellement, je trouve l'API de sous-processus trop surchargée pour un débutant (même si elle permet de spécifier le cwd du nouveau processus, rendant la restauration inutile). –

Questions connexes