首页 > 编程语言 >java代码调用python

java代码调用python

时间:2023-10-26 21:03:41浏览次数:28  
标签:调用 java String python Python BufferedReader import

Java可以通过调用外部命令来执行Python脚本,具体方法如下:

  1. 首先确保Python已经安装并配置好,可以在命令行中输入“python --version”来检查Python是否安装成功。
  2. 在Java中调用Python脚本,可以使用Java的Runtime类或ProcessBuilder类来执行外部命令。这里以Runtime类为例:
java复制代码
 import java.io.BufferedReader;  
 
 import java.io.IOException;  
 
 import java.io.InputStreamReader;  
 
   
 
 public class CallPythonScript {  
 
     public static void main(String[] args) {  
 
         String pythonScriptPath = "path/to/your/python/script.py";  
 
         String[] command = {"python", pythonScriptPath};  
 
         try {  
 
             Process process = Runtime.getRuntime().exec(command);  
 
             BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));  
 
             String line;  
 
             while ((line = reader.readLine()) != null) {  
 
                 System.out.println(line);  
 
             }  
 
             reader.close();  
 
         } catch (IOException e) {  
 
             e.printStackTrace();  
 
         }  
 
     }  
 
 }

上述代码中,需要将“path/to/your/python/script.py”替换为实际的Python脚本路径。然后通过Runtime类执行外部命令,并获取Python脚本的输出结果,这里使用了BufferedReader来读取输出结果。

  1. 如果Python脚本需要传递参数,可以将参数作为命令行参数传递给Java程序,然后再传递给Python脚本。例如:
java复制代码
 import java.io.BufferedReader;  
 
 import java.io.IOException;  
 
 import java.io.InputStreamReader;  
 
 import java.util.Arrays;  
 
   
 
 public class CallPythonScriptWithArgs {  
 
     public static void main(String[] args) {  
 
         String pythonScriptPath = "path/to/your/python/script.py";  
 
         String arg1 = "arg1";  
 
         String arg2 = "arg2";  
 
         String[] command = {"python", pythonScriptPath, arg1, arg2};  
 
         try {  
 
             Process process = Runtime.getRuntime().exec(command);  
 
             BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));  
 
             String line;  
 
             while ((line = reader.readLine()) != null) {  
 
                 System.out.println(line);  
 
             }  
 
             reader.close();  
 
         } catch (IOException e) {  
 
             e.printStackTrace();  
 
         }  
 
     }  
 
 }

上述代码中,将Python脚本路径和两个参数作为命令行参数传递给Java程序,然后再传递给Python脚本。

标签:调用,java,String,python,Python,BufferedReader,import
From: https://blog.51cto.com/u_16307208/8042757

相关文章

  • 事务,python连接mysql 索引等
    1.python连接MySQLMySQL本身就是一款C/S架构,有服务端、有客户端,自身带了有客户端:mysql.exepython这门语言成为了MySQL的客户端(对于一个服务端来说,客户端可以有很多)"""SQL的由来"""操作步骤:1.先链接MySQLhost、port、username、password、charset、库等......
  • maven创建普通java项目访问mysql-mybatis
    基础资料:数据库:d1,表:t1,字段:xm,nl(即姓名、年龄),内容('zs',20;'ls',18)以下内容由官网“https://mybatis.org/mybatis-3/zh/getting-started.html”整理而来。不尽不实之处请参考官网原文。思想:1、在pom.xml文件中除了给出mybatis和jdbc的依赖之外,还应给出资源(配置)文件位置。2、在my......
  • Langchain语言模型提问请求,提问使用非标准的sse请求获取流式数据,java后台版解决方式
    问题描述:请求后接收的数据流,不走EventSourceListener的onEvent事件,但onOpenonClosed都是正常走的。 问题原因:默认的接口返回是StreamingResponse不是EventSourceResponse,无法走标准sse协议的onEvent()方法 目标需求:在不改动模型方面接口的情况下,接收到流式数据并通过sse协......
  • java复习
    java中成员变量和局部变量的区别是什么?作用域不同,局部变量的作用域仅限于定义它的方法,在该方法外无法访问它。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它,如果访问权限允许,还可以在类外部使用成员变量;初始值不同,对于成员变量,如果在类定义中没有给它赋予初......
  • javaweb--mysql数据模型
    关系型数据库由多张可以相互连接的二维表组成的数据库frm表文件myd数据文件注释/**/多行注释--和#单行注释四类语法DDL数据定义语言DML数据操作语言DQL数据查询语言DCL数据控制语言原始数据库information_schema存储数据库的基本信息,存储的库名表名列名等mysql存......
  • httprunner2.5.7+python3安装报错解决
    1.执行hrun-V报错:ImportError:cannotimportname'Iterable'from'collections'将fromcollectionsimportIterable修改成fromcollections.abcimportIterable 2.执行hrun-V报错:ImportError:cannotimportname'soft_unicode'from'......
  • Python threading实现多线程 提高篇 线程同步,以及各种锁
    本文主要讲多线程的线程之间的资源共享怎么保持同步。多线程基础篇见,Pythonthreading实现多线程基础篇Python的多线程,只有用于I/O密集型程序时效率才会有明显的提高,如文件/输入输出/socket网络通信/http通讯等待。对于计算密集型程序一般采用多进程,这里不多讲。一、多线程的......
  • Java基本语法_04类型转换
    1.自动类型转换 ......
  • Java map详解 - 用法、遍历、排序、常用API等
    java.util中的集合类包含Java中某些最常用的类。最常用的集合类是List和Map。Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。本文主要介绍javamap的初始化、用法、map的四种常用的遍历方式、map的排序以及常用ap......
  • 外科手术式深入剖析--->函数的传值调用与传址调用的区别
    博主主页:@威化小餅干......