在java中调用python脚本

这篇具有很好参考价值的文章主要介绍了在java中调用python脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在java中调用python脚本

推荐使用第三种方法,因为只有第三种方法使用Runtime.getRuntime()才能执行含有第三方库(numpy,matlab,pandas等库)的python脚本。

方法一:在java程序中执行Python语句

1.首先在maven中添加依赖

<dependency>
    <groupId>org.python</groupId>
    <artifactId>jython-standalone</artifactId>
    <version>2.7.0</version>
</dependency>

2.使用Jpython中的PythonInterpreter执行Python语句

public class Tool{
    public static void main(String [] args){
        PythonInterpreter interpreter = new PythonInterpreter();
		interpreter.exec("print("This is a JPython text")");
        interpreter.exec("print(2+3)");
    }
}

方法二:java执行python脚本(不支持第三方库)

1.首先在maven中添加依赖(也是依赖Jpython包)

<dependency>
    <groupId>org.python</groupId>
    <artifactId>jython-standalone</artifactId>
    <version>2.7.0</version>
</dependency>

2.创建一个Python脚本

#当我们的Python脚本中有汉字的时候,需要在脚本的第一行写coding = utf-8 来告诉编译器编码方式是什么
# -*- coding: UTF-8 -*-
a = 'This is a test'
print(a)

3.在java中执行python脚本

public class Tool{
    public static void main(String [] args){
        PythonInterpreter interpreter = new PythonInterpreter();
		interpreter.execfile("./text.py");//放脚本的位置
		interpreter.cleanup();
		interpreter.close();
    }
}

方法三:使用Runtime.getRuntime()执行Python脚本

1.不需要传递参数的例子

先创建一个简单的调用第三方库的Python脚本

import numpy as np
a = np.arange(10)
print(a)

然后使用 Runtime.getRuntime() 方法执行python脚本

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Tool {
    public static void main(String[] args) {
        try {
            Process proc = Runtime.getRuntime().exec("test.py");//执行脚本
            //用输入输出流来截取结果
            BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line = null;
            while((line = reader.readLine()) != null){
                System.out.println(line);
            }
            reader.close();
            proc.waitFor();
        } catch (IOException e) {
             throw new RuntimeException(e);
        } catch (InterruptedException e) {
             throw new RuntimeException(e);
        } 
    }
}

2.需要传递参数的例子

import sys
def sum(a, b, c):
	return a+b+c

if __name__ == "__main__":	
	a=(int(sys.argv[1]))
	b=(int(sys.argv[2]))
	c=(int(sys.argv[3]))
	s=sum(a,b,c)
	print("finish!!!")
	print(s)

sys.argv用于获取参数url1,url2,乃至更多,sys.argv[0]代表python程序名

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Tool {
    public static void main(String [] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
		int b = scanner.nextInt();
		int c = scanner.nextInt();

        try {
            String[] my_args =new String[] {"python","test.py",String.valueOf(a),String.valueOf(b),String.valueOf(c)};
            Process proc =  Runtime.getRuntime().exec(my_args);//执行脚本

            BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line = null;
            while((line = reader.readLine()) != null){
                System.out.println(line);
            }
            reader.close();
            proc.waitFor();
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

my_args数组里面存放的参数{“python”,“test.py”,String.valueOf(a),String.valueOf(b),String.valueOf©},第一个是固定的就写’python‘,第二个是我们要执行的python脚本的位置(注意路径),后面的是我们要传递的参数也就是url1,url2等等(和Python脚本所接收的内容互相对应)

这种方式我们需要使用输入流输出流BufferedReader来截取结果文章来源地址https://www.toymoban.com/news/detail-550231.html

到了这里,关于在java中调用python脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • go语言调用python脚本

    在 go语言中调用 python 程序,你可能会用到 亲测 go 测试 go 文件 python nansen.py

    2024年02月11日
    浏览(37)
  • Elasticsearch painless脚本教程(包含Java API和SpringDataElasticsearch调用脚本)

    painless是ElasticStack在升级到5.0版本之后新增的脚本语言,而且针对性的优化了Elasticsearch的场景。由于支持了java的静态类型和Java的lambda表达式,对于Elasticsearch数据的操作更轻量和快速,而且painless脚本因此更加简单安全。 painless脚本分为inline script(api请求时使用)和stored script

    2024年02月16日
    浏览(35)
  • [C#] 如何调用Python脚本程序

    有以下几个原因需要C#调用Python: Python拥有丰富的生态系统:Python有很多强大的第三方库和工具,可以用于数据科学、机器学习、自然语言处理等领域。通过C#调用Python,可以利用Python的生态系统来完成一些特定的任务。 C#和Python的优势互补:C#是一种高性能、静态类型的编程

    2024年02月19日
    浏览(39)
  • java中调用groovy脚本的几种方式

    Groovy 是一种基于 JVM 的动态语言,与 Java 语言紧密集成,可以很方便地在 Java 项目中使用。Groovy 有着简洁的语法、灵活的类型系统、强大的元编程能力,适合编写各种类型的脚本和应用程序。使用groovy也可以实现java程序的动态扩展,和用于插件化的开发,增强系统的可扩展

    2024年02月14日
    浏览(41)
  • C#使用IronPython调用Python脚本实例

    本文 详细讲解在C#中调用Python脚本的 实例 。 首先 本文假设您已经安装好了Python环境和对应的库。 目录 一、IronPython简述

    2024年02月10日
    浏览(41)
  • 利用Java代码调用Lua脚本改造分布式锁

    4.8 利用Java代码调用Lua脚本改造分布式锁 lua脚本本身并不需要大家花费太多时间去研究,只需要知道如何调用,大致是什么意思即可,所以在笔记中并不会详细的去解释这些lua表达式的含义。 我们的RedisTemplate中,可以利用execute方法去执行lua脚本,参数对应关系就如下图股

    2024年04月10日
    浏览(55)
  • 【python VS vba】(3) 在python直接调用vba脚本

    目录 0 前言 1 VBA 内容 1.1  EXCEL这边VBA的内容 1.2 VBA的测试代码 2 python 调用 2.1 python 调用VBA的过程和结果 2.2 代码 前面写了这么多,没想到,其实py是可以直接支持VBA的 python的模块import xlwings,可以让python直接调用EXCEL工作簿文件里的VBA脚本 具体步骤如下 试验环境:C:UsersAd

    2024年02月06日
    浏览(44)
  • python3调用阿里云openapi脚本 - 生产环境

    下文内使用的脚本,主要应用场景为: 在日常使用阿里云服务时,获取数据时,一般都需要调用openapi,下面的脚本为调用阿里云直播接口的脚本,如大家并非使用直播产品的接口,需做以下准备: 查询接口版本,示例:‘Version’:‘2016-11-01’。 阿里云AK的RAM权限。 其他产品

    2024年02月21日
    浏览(38)
  • 一个小脚本,python调用ffmpeg 批量快速旋转视频

    输入的旋转角度为逆时针角度,如果要顺时针旋转90度,输入270即可 路径为存放视频的根目录,会自动遍历并旋转,生成后缀+01的新文件 目录内尽量不要存在非视频文件,非视频文件处理后可能会损坏.

    2024年02月16日
    浏览(64)
  • Docker笔记-搭建Python环境、安装依赖、打包镜像、导入镜像、编写bash脚本灵活调用

    适合无联网的机器及多Python的机器进行部署。 有网络及有docker的,拉取指定版本的python如: 安装好后进入容器: 使用pip安装各种依赖: 千万不要退出,另外启动一个shell,查下目前运行的容器: 制作成新的镜像: 导出新镜像: 找到没联网有docker的机器,导入新的镜像 在新

    2024年02月21日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包