Изменение пути для запуска кода Python через Java

#java #python

#java #python

Вопрос:

Я реализовал приложение Python и приложение Java. Давайте предположим, что в результате моему приложению Python возвращается True .

Я хотел бы запустить приложение Python через приложение Java, получить результаты из приложения Python в мое приложение Java и выполнить дополнительные вычисления в моем приложении Java.

Я использую Process на Java для этой миссии. В моем примере приложение Python запущено с файлом config.ini в качестве параметра.

 String path = "C:\Python_Project\run_app.py configuration\config.ini";
Process p = Runtime.getRuntime().exec("python "   path);
 

Это не работает. Java-приложение не выходит из строя, поскольку я не получаю ничего интересного из приложения Python.

Я решил запустить его через командную строку и обнаружил, что выполнить не удалось, потому что в одном из моих внутренних файлов я использовал импорт следующим образом: из inner_module import Object1

Может быть, это проблема? Я должен запустить его из каталога приложений Python? Но как?

У меня есть два вопроса:

  1. Это способ изменить путь для запуска моего приложения на Python? Я запускаю приложение Java из своего каталога приложений Java, и мне нужно запустить приложение Python внутри каталога приложений Python?Как я могу изменить перспективу?
  2. Хорошо ли использовать Process и exec? Должен ли я использовать что-то еще? Как я могу использовать процесс для отправки приложения Python с истинным значением?

Ответ №1:

Вы можете попробовать ProcessBuilder, который позволяет вам установить рабочий каталог. Что-то вроде:

 ProcessBuilder pb = new ProcessBuilder(program, argument);
pb.directory(new File("path/to/python/directory"));
Process process = pb.start();
 

Вы можете получить выходные данные скрипта, прочитав из process.getInputStream()

 BufferedReader reader = new BufferedReader(
    new InputStreamReader(process.getIntputStream()));

String output;
while((output=reader.readLine()) != null)
    System.out.println(output);