Как я могу заставить мой скрипт python (версия 2.5) запускать файл jar внутри папки, а не из командной строки?

Я знаком с использованием os.system для запуска из командной строки. Тем не менее, я хотел бы иметь возможность запустить JAR-файл из определенной папки, например. моя папка 'test'. Это потому, что мой jar (находится в моей папке "test") требует файл внутри моей "test" папки. Итак, как бы я написать функцию в моем сценарии, которая делает следующее: c:\test>java -jar run_this.jar required_parameter.ext? Я новичок в Python, поэтому детали очень ценятся. Заранее спасибо.

2 ответа

Решение

Вот небольшой скрипт, чтобы вы начали. Существуют способы сделать его "лучше", но недостаточно знать, чего вы пытаетесь достичь, этого должно быть достаточно.

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

В общем: используйте os.chdir, чтобы изменить каталог родительского процесса, затем os.system, чтобы запустить файл jar. Если вам нужно, чтобы рабочий каталог Python оставался стабильным, вам нужно вернуть chdir в исходный рабочий каталог - вам нужно записать это с помощью os.getcwd().

В Unix: создайте дочерний процесс явно с помощью os.fork. У родителя дождитесь ребенка с os.waitpid. У ребенка используйте os.chdir, затем os.exec для запуска java.

Другие вопросы по тегам