Вызов python3 скрипта из java?

Пользуюсь на домашнем сервачке для скачки торрентов uTorrent for Linux.


Он имеет один большой (для меня) недостаток — в нем нет возможности определить, в какую папку загружать данный конкретный торрент.


Есть скрипт на python3, который помогает решить эту задачу.
Здесь находится ветка его обсуждения.

Хотел написать к нему небольшую десктопную морду, в которой можно будет ввести абсолютный путь на сервере, куда сохранять, выбрать торрент, который скачивать и вводить логин-пароль для сервера.


Столкнулся с тем, что не знаю, как вызывать питонский скрипт из джавы.

Прошу помощи.
  • Вопрос задан
  • 4330 просмотров
Пригласить эксперта
Ответы на вопрос 3
apangin
@apangin
А Runtime.exec() не подходит?
Ответ написан
mardy_bum
@mardy_bum
Попробуйте так:

Process p = Runtime.getRuntime().exec("sh script.py");

InputStream stdout = p.getInputStream();
InputStream stderr = p.getErrorStream();
InputStreamReader isr = new InputStreamReader(stdout);
InputStreamReader isrerr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
BufferedReader brerr = new BufferedReader(isrerr);

String line = null;

System.out.println("OUTPUT:");
while ((line = br.readLine()) != null) 
   System.out.println(line);
System.out.println();

System.out.println("ERROR:");
while ((line = brerr.readLine()) != null) 
   System.out.println(line);
System.out.println();

p.waitFor();
Ответ написан
mardy_bum
@mardy_bum
Jython и JEPP не поддерживают Python 3, поэтому exec() — оптимальный вариант.
В файле уже прописан shebang (#!/usr/bin/env python3), так что его можно запустить просто как скрипт.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы