DevOps系列文章之 java调用python脚本

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

在java类中直接执行python语句

在java类中直接调用本地python脚本

使用Runtime.getRuntime()执行python脚本文件(推荐)

调用python脚本中的函数

简单介绍

官网地址 首页 | (jython.org)

Jython项目提供了Java中的Python实现, 为Python提供了在JVM上运行的好处,并可以访问用Java编写的类。 当前版本(Jython 2.7.x)仅支持Python 2(抱歉)。 在项目的GitHub存储库中有一个关于Python 3的工作。

Jython实现可免费用于商业和非商业用途。 它们与 PSF 许可证 v2 下的源代码一起分发。

Jython是Java的补充,特别适合以下任务:

  • 嵌入式脚本 - Java 程序员可以将 Jython 库添加到他们的系统中,以允许最终用户编写简单或复杂的脚本,为应用程序添加功能。
  • 交互式实验 - Jython 提供了一个交互式解释器,可用于与 Java 包或正在运行的 Java 应用程序进行交互。这允许程序员使用Jython试验和调试任何Java系统。
  • 快速应用程序开发 - Python 程序通常比同等的 Java 程序短 2-10 倍。这直接转化为程序员生产力的提高。Python和Java之间的无缝交互允许开发人员在开发和发布产品期间自由混合这两种语言。
下面是在一个简单的 Java 应用程序中运行 Python 代码的示例
import org.python.util.PythonInterpreter;

public class JythonHelloWorld {
  public static void main(String[] args) {
    try(PythonInterpreter pyInterp = new PythonInterpreter()) {
      pyInterp.exec("print('Hello Python World!')");
    }
  }
}
下面是从 Python 代码使用 Java 的示例
from java.lang import System # Java import

print('Running on Java version: ' + System.getProperty('java.version'))
print('Unix time from Java: ' + str(System.currentTimeMillis()))

准备工作:

创建maven工程,结构如下:关注箭头的几个类即可

DevOps系列文章之 java调用python脚本,python,java,开发语言

到官网Downloads | Jython下载Jython的jar包或者在maven的pom.xml文件中加入如下代码:

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

1.在java类中直接执行python语句

 创建JavaRunPython.java类:

package com.test;

import org.python.util.PythonInterpreter;

public class JavaRunPython {
    
    public static void main(String[] args) {
        PythonInterpreter interpreter = new PythonInterpreter();
        interpreter.exec("a='hello world'; ");
        interpreter.exec("print a;");
    }

}

DevOps系列文章之 java调用python脚本,python,java,开发语言

输出结果如下:

DevOps系列文章之 java调用python脚本,python,java,开发语言

2.在java中直接调用python脚本

在本地的D盘创建一个python脚本,文件名字为javaPythonFile.py,文件内容如下:

a = 1
b = 2
print (a + b)

创建JavaPythonFile.java类,内容如下:

package com.test;

import org.python.util.PythonInterpreter;

public class JavaPythonFile {

    public static void main(String[] args) {
        PythonInterpreter interpreter = new PythonInterpreter();
        interpreter.execfile("D:\\javaPythonFile.py");
    }
}
 
 

输出结果如下:

DevOps系列文章之 java调用python脚本,python,java,开发语言

3.使用Runtime.getRuntime()执行python脚本文件,推荐使用

在本地的D盘创建一个python脚本,文件名字为Runtime.py,文件内容如下:

print('RuntimeDemo')

创建RuntimeFunction.java类,内容如下:

package com.test;

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

public class RuntimeFunction {
    public static void main(String[] args) {
        Process proc;
        try {
            proc = Runtime.getRuntime().exec("python D:\\Runtime.py");
            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line = null;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
            in.close();
            proc.waitFor();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        } 
    }
}

DevOps系列文章之 java调用python脚本,python,java,开发语言

4.调用python脚本中的函数

在本地的D盘创建一个python脚本,文件名字为add.py,文件内容如下:

def add(a,b):
    return a + b

创建Function.java类,内容如下:

package com.test;

import org.python.core.PyFunction;
import org.python.core.PyInteger;
import org.python.core.PyObject;
import org.python.util.PythonInterpreter;

public class Function {
    
    public static void main(String[] args) {
        PythonInterpreter interpreter = new PythonInterpreter();
        interpreter.execfile("D:\\add.py");
                
        // 第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型
        PyFunction pyFunction = interpreter.get("add", PyFunction.class);
        int a = 5, b = 10;
        //调用函数,如果函数需要参数,在Java中必须先将参数转化为对应的“Python类型”
        PyObject pyobj = pyFunction.__call__(new PyInteger(a), new PyInteger(b)); 
        System.out.println("the anwser is: " + pyobj);
    }

}

运行结果如下:

DevOps系列文章之 java调用python脚本,python,java,开发语言文章来源地址https://www.toymoban.com/news/detail-624676.html

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

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

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

相关文章

  • DevOps系列文章之 DevOps 运维服务体系

    DevOps 体系是从原始运维一步步走过来的,原始运维好比是本,有了本进而想继续提升效率、减少出错、优化流程,就发展到了 DevOps,AIOps……各种Ops 首先,运维的业务职能规范后形成章程、纲领,在互联网快速发展的特点下,形成了一套应对”快”和”变”的体系,并不停

    2024年02月12日
    浏览(102)
  • go语言调用python脚本

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

    2024年02月11日
    浏览(36)
  • DevOps系列文章之 Git知识大全

    常用命令   其他参数 --inital-branch 初始化的分支 --bare 创建一个裸仓库(纯 Git 目录,没有工作目录) --template 可以通过模板来创建预先建好的自定义 git 目录   用户名配置 git config --global user.name \\\"yourname\\\" git config --global user.email yourname@xx.com instead of 配置 git config --global url.git

    2024年02月16日
    浏览(33)
  • DevOps系列文章 之 Springboot单元测试

    在没有代码生成工具或尝试一门新的 ORM 框架时,当我们希望不去另外写 Service 和 Controller 来验证 DAO 层的代码不希望只通过接口请求的方式来验证时,这时候单元测试的方式就可以帮助我们满足这一需求。 在我们开发Web应用时,经常会直接去观察结果进行测试。虽然也是一

    2024年02月15日
    浏览(50)
  • DevOps系列文章之 Dockerfile 使用流程

    主要步骤: Step1、准备项目应用程序包 Step2、编写Dockerfile及启动脚本 Step3、docker build 构建镜像 Step4、docker run 启动容器 Step5、docker exec 进入容器进行验证 Step6、镜像的导入导出 Step7、提交容器生成新镜像 Step1、准备项目应用程序包 根据项目需要,将应用程序包、Nginx配置文件

    2024年02月16日
    浏览(36)
  • DevOps系列文章之Argo CD 使用

    Argo CD 是用于 Kubernetes 的声明性 GitOps 连续交付工具。 Argo CD 可在指定的目标环境中自动部署所需的应用程序状态,应用程序部署可以在 Git 提交时跟踪对分支,标签的更新,或固定到清单的特定版本。 Argo CD 的主要职责是 CD(Continuous Delivery,持续交付),将应用部署到 Kube

    2024年02月16日
    浏览(39)
  • DevOps系列文章之 GitLab CI/CD

    由于目前公司使用的gitlab,大部分项目使用的CICD是gitlab的CICD,少部分用的是jenkins,使用了gitlab-ci一段时间后感觉还不错,因此总结一下 介绍gitlab的CICD之前,可以先了解CICD是什么 我们的开发模式经历了如下的转变:瀑布模型-敏捷开发→DevOps(Development、Operations的组合词,是

    2024年01月22日
    浏览(53)
  • DevOps系列文章 之 docker 制作kafka镜像

    Docker制作Kafka镜像教程 概述 本教程将指导你如何使用Docker制作一个Kafka镜像。Kafka是一个高性能、分布式的消息队列系统,用于处理大规模的实时数据流。使用Docker制作Kafka镜像可以方便地部署和管理Kafka集群。 整体流程 下面是制作Kafka镜像的整体流程: 步骤1:安装Docker 首先

    2024年02月15日
    浏览(33)
  • DevOps系列文章 之 linux ab压力测试

    1、安装 2、检测版本 3、常用 4、解释

    2024年02月16日
    浏览(36)
  • DevOps系列文章 之 Docker in Docker

    一、  背景介绍 工作中,要实现在docker中运行docker,实现镜像的拉取,创建,修改,上传等操作。 尝试过在docker中,安装docker。行不通,服务起不来。 而且直接在 docker 容器内嵌套安装 docker 未免太过臃肿。 内部安装与运行Docker无疑增加了服务器镜像的大小,同时还增加D

    2024年02月16日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包