java使用python_Java调用Python示例

Java调用Python相关问题

如果python脚本中需要用到第三方库,则最好要用Runtime.getRuntime().exec的方法来从Java中调用python。

新建 test.py脚本

import sys

def hello(name,age,num):

print('name:'+name)

print('age:'+age)

print('num:'+num)

total = age+num

print('total:'+total)

return total;

if __name__ == '__main__':

hello(sys.argv[1], sys.argv[2], sys.argv[3])

需要引用sys,传入的参数用sys.argv[1]、sys.argv[2]、sys.argv[3]表示。其中需要注意的是接收参数从sys.argv[1]开始,sys.argv[0]是python脚本的参数地址,没有实际作用。

__name__ == '__main__' 的作用

在Python中,一个.py文件就是一个模块,一般情况下,模块的名字就是文件名(不包括扩展名.py)。

全局变量__name__存放的就是模块的名字。

__name__ 是当前模块名,当模块被直接运行时特殊变量name等于main,所以__name__就等于__main__

假如被hello.py导入时,特殊变量name等于hello,所以__hello__就不等于__main__

一个 Python 源码文件除了可以被直接运行外,还可以作为模块(也就是库)被导入。不管是导入还是直接运行,最顶层的代码都会被运行(Python 用缩进来区分代码层次)。而实际上在导入的时候,有一部分代码我们是不希望被运行的。

对于很多编程语言来说,程序都必须要有一个入口,而 Python 则有不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口。

返回结果

Java调用python时,不能通过return语句来获取返回值,而只能通过print将结果写入到标准输出流中,然后在Java中通过标准输入流来读取到返回结果。

因此,如果想得到返回结果,就需要在python文件中做修改,通过print函数将需要的结果返回到Java程序中。

try {

String[] arguments = new String[] { "python", "I:\\test.py", "张三", "23", "100" };

Process process = Runtime.getRuntime().exec(arguments);

BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));

String line = null;

while ((line = in.readLine()) != null) {

System.out.println(line);

}

in.close();

// java代码中的process.waitFor()返回值为0表示我们调用python脚本成功,

// 返回值为1表示调用python脚本失败,这和我们通常意义上见到的0与1定义正好相反

int re = process.waitFor();

System.out.println(re);

} catch (Exception e) {

e.printStackTrace();

}

}

运行结果:

name:张三

age:23

num:100

total:23100

0

PythonJava集成有多种方式,其一种常见的方法是使用Jython。Jython是一种Python解释器,它可以在Java虚拟机(JVM)上运行Python代码,并且可以与Java代码无缝集成。 以下是使用Jython将PythonJava集成的步骤: 1. 下载并安装Jython:可以从官方网站(https://www.jython.org/download)下载Jython的最新版本。安装过程与普通Python解释器类似。 2. 创建Java项目:使用Java开发环境(如Eclipse或IntelliJ IDEA)创建一个新的Java项目。在项目创建一个Java类,用于调用Python代码。 3. 编写Python代码:在Java项目的根目录下创建一个名为“python”的文件夹。在该文件编写Python代码,并保存为.py文件。注意,Jython只支持Python 2.x版本。 4. 在Java代码调用Python代码:在Java使用Jython提供的类库来调用Python代码。例如,可以使用PythonInterpreter类来创建Python解释器对象,然后使用该对象的execfile()方法来执行Python代码文件。 以下是一个简单的示例代码,演示如何在Java调用Python代码: ```java import org.python.util.PythonInterpreter; public class Main { public static void main(String[] args) { PythonInterpreter interpreter = new PythonInterpreter(); interpreter.execfile("python/myscript.py"); } } ``` 在上面的示例,我们创建了一个PythonInterpreter对象,并使用execfile()方法执行了名为“myscript.py”的Python文件。 需要注意的是,由于PythonJava是两种不同的语言,因此在将它们集成时需要特别小心。特别是在传递数据和处理类型转换时,需要注意它们之间的差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值