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






В общем: используйте os.chdir для изменения каталога родительского процесса, затем os.system для запуска файла jar. Если вам нужно, чтобы рабочий каталог Python оставался стабильным, вам нужно вернуть chdir в исходный рабочий каталог - вам нужно записать это с помощью os.getcwd ().
В Unix: явно создайте дочерний процесс с помощью os.fork. В родителе дождитесь ребенка с помощью os.waitpid. В дочернем случае используйте os.chdir, затем os.exec для запуска java.
Почему os.system предпочитает subprocess.Popen?
Я лично считаю, что API подпроцесса слишком перегружен для новичка (хотя он позволяет указать cwd нового процесса, что делает восстановление ненужным).
Вот небольшой сценарий, с которого можно начать. Есть способы сделать это «лучше», но незнания всего объема того, что вы пытаетесь достичь, должно быть достаточно.
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
Попробуйте добавить в сценарий те части, которые не работают. Не все, а кусок кода, который иллюстрирует вашу проблему.