Иногда, чтобы выполнить требования проекта, нам необходимо вызывать Python скрипты из нашего Java кода. Это можно сделать с помощью классов Process, ProcessBuilder и Jython. Давайте рассмотрим, как мы можем использовать каждый из них.Использование класса Process для запуска Python скрипта из Java кодаМы можем использовать класс Process в Java для запуска Python скриптов из нашего Java кода. Давайте попробуем создать Python скрипт и запустить его с помощью Java кода. Следуйте шагам ниже:Скопируйте ваш Python скрипт в строку в Java.Создайте файл с расширением .py, используя BufferedWriter.Запишите содержимое из строки в файл Python и закройте записывающий поток.Создайте процесс для запуска файла Python с помощью Runtime.getRuntime().exec().Прочитайте данные из процесса с помощью BufferedReader.Используйте или выведите данные, полученные из выполнения кода Python.Теперь давайте реализуем указанные выше шаги в Java коде:import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.InputStreamReader; public class Example { public static void main(String a[]){ try{ String Python_Script = "print(\"Привет, это DTF.RU!\")\n"; BufferedWriter Buffered_Writer = new BufferedWriter( new FileWriter("DemoPythonFile.py")); Buffered_Writer.write(Python_Script); Buffered_Writer.close(); Process Demo_Process = Runtime.getRuntime().exec("python DemoPythonFile.py"); BufferedReader Buffered_Reader = new BufferedReader( new InputStreamReader( Demo_Process.getInputStream() )); }catch(Exception e){ e.printStackTrace(); } } }Код выше пытается создать и запустить Python скрипт в Java и записать следующую строку в файл DemoPythonFile.py.Привет, это DTF.RU!Следует отметить, что нет необходимости создавать скрипт Python, а затем его запускать; вы также можете напрямую загрузить свой Python скрипт и его вывод в Java код.Обратите внимание, что вы можете получить предупреждение о устаревшей функции Runtime.getRuntime().exec(), что означает, что Java может удалить эту функцию в будущих версиях.Использование класса ProcessBuilder для запуска Python скрипта из Java кодаКласс ProcessBuilder в Java используется для создания процесса операционной системы. Мы также можем использовать этот класс для запуска Python скриптов в Java.Следуйте шагам ниже, чтобы запустить Python скрипты в Java с помощью класса ProcessBuilder:Убедитесь, что Python установлен на вашей системе.Создайте Python скрипт с расширением .py или выберите один, если у вас уже есть.Создайте экземпляр класса ProcessBuilder и передайте python и путь к скрипту в качестве параметров.Создайте процесс для запуска ProcessBuilder с помощью метода start(); это выполнит Python скрипт.Создайте BufferedReader для получения вывода Python скрипта из процесса.Выведите результат.Давайте реализуем пример на Java. Наш Python скрипт:print("Привет, это DTF.RU!")И вот реализация на Java:import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Example { public static void main(String[] args) throws IOException, InterruptedException { String Script_Path = "C:\\Users\\Mironov\\script.py"; ProcessBuilder Process_Builder = new ProcessBuilder("python",Script_Path) .inheritIO(); Process Demo_Process = Process_Builder.start(); Demo_Process.waitFor(); BufferedReader Buffered_Reader = new BufferedReader( new InputStreamReader( Demo_Process.getInputStream() )); String Output_line = ""; while ((Output_line = Buffered_Reader.readLine()) != null) { System.out.println(Output_line); } } }Приведенный выше код выполнит указанный Python-скрипт с использованием Java и выведет его в консоль. Вывод:Привет, это DTF.RU!Используйте Jython для одновременного выполнения Python и Java кодаJython - это проект для реализации скриптов Python в коде Java. Jython запускает Python и Java код одновременно.Чтобы использовать Jython в Java, нам просто нужно скачать Jython-standalone-2.7.2.jar или любую последнюю версию и добавить его в путь сборки вашего проекта. Следуйте шагам ниже, чтобы добавить Jython в вашу Java среду:Скачайте Jython Standalone здесь.Добавьте Jython-standalone-2.7.2.jar в ваш путь сборки.Перейдите в свойства проекта Properties -> Java Build Path.Добавьте внешний Jar в ваш classpath.Выберите Jython-standalone-2.7.2.jar и нажмите Применить и Закрыть.После того как Jython включен в нашу среду Java, мы теперь можем запускать Python-скрипты в Java. Класс PythonInterpreter принадлежит Jython и используется для выполнения Python-скриптов и операций.Вот различные методы от Jython для выполнения Python в Java:setIn(PyObject) - Используется для установки объекта Python в качестве стандартного входного потока.setIn(java.io.Reader) - Используется для установки Java IO Reader в качестве стандартного входного потока.setIn(java.io.InputStream) - Используется для установки Java IO InputStream в качестве стандартного входного потока.setOut(PyObject) - Используется для установки объекта Python в качестве стандартного выходного потока.setOut(java.io.Writer) - Используется для установки Java IO Writer в качестве стандартного выходного потока.setOut(java.io.OutputStream) - Используется для установки Java IO OutputStream в качестве стандартного выходного потока.setErr(java.io.Writer) - Используется для установки Java IO Writer в качестве потока стандартных ошибок.setErr(PyObject) - Используется для установки объекта Python в качестве потока стандартных ошибок.setErr(java.io.OutputStream) - Используется для установки Java IO OutputStream в качестве потока стандартных ошибок.eval(String) - Используется для вычисления строки Python для Java.eval(PyObject) - Используется для вычисления объекта Python для Java.exec(String) - Используется для выполнения строки Python в локальном пространстве имен.exec(PyObject) - Используется для выполнения объекта Python в локальном пространстве имен.execfile(String filename) - Используется для выполнения файла Python в локальном пространстве имен.execfile(java.io.InputStream) - Используется для выполнения Python InputStream в локальном пространстве имен.compile(String) - Используется для компиляции строки Python в модуль выражения.compile(script, filename) - Используется для компиляции скрипта Python в модуль выражения.set(String name, Object value) - Используется для установки переменной типа объект.set(String name, PyObject value) - Используется для установки переменной типа PyObject.get(String) - Используется для получения значения переменной.get(String name, Classjavaclass) - Используется для получения значения переменной и возврата его в виде экземпляра заданного класса Java.Теперь, когда мы знаем о методах из проектов Jython, давайте попробуем использовать некоторые из них в нашем примере: Файл script.py:print("Привет, это DTF.RU!, Сообщение от Python")Реализация Jython:import org.python.util.PythonInterpreter; import org.python.core.*; public class Example { public static void main(String []args) throws PyException { PythonInterpreter Python_Interpreter = new PythonInterpreter(); System.out.println( "Привет, это DTF.RU!, Сообщение от Java" ); // Запустите Python файл Python_Interpreter.execfile("C:\\Users\\Mironov\\script.py"); // Выполнить различные операции Python // Установить переменную и распечатать ее с использованием Python в java Python_Interpreter.set("x", new PyInteger(100)); Python_Interpreter.exec("print x"); // Выполнить сумму Python_Interpreter.exec("y = 25+45"); PyObject y = Python_Interpreter.get("y"); System.out.println("y: "+y); } }Приведенный выше код выполнит Python-скрипт из файла и выполнит некоторые Python-операции с использованием методов из таблицы выше. Вывод:Привет, это DTF.RU!, Сообщение от Java Привет, это DTF.RU!, Сообщение от Python 100 y: 70
Комментарий недоступен
погромист решил устроить погром на сайте