Сведения о вопросе

profi

04:37, 5th August, 2020

Теги

Python   Java    

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

Просмотров: 323   Ответов: 3

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


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


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

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


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

Прошу помощи.



  Сведения об ответе

pumpa

07:36, 3rd August, 2020

А Runtime.exec() не подходит?


  Сведения об ответе

lool

23:39, 22nd August, 2020

Попробуйте так:

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();


  Сведения об ответе

DINO

15:14, 9th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться