Java:Java程序通过执行系统命令调用Python脚本

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

本文实现功能:Java程序调用Python脚本

Python脚本

import sys

def add(x, y):
    return x + y

if __name__ == "__main__":
    print(add(int(sys.argv[1]), int(sys.argv[2])))

直接执行

$ python math.py 1 2
3

Java程序调用Python脚本

package io.github.mouday.utils;

import java.io.*;

/**
 * 执行系统命令
 */
public final class ShellUtil {
    private ShellUtil() {
    }

    /**
     * 操作系统名称
     *
     * @return Mac OS X
     */
    public static String getOsName() {
        return System.getProperty("os.name");
    }

    /**
     * 判断是否为windows操作系统
     *
     * @return
     */
    public static Boolean isWindows() {
        return ShellUtil.getOsName().toLowerCase().contains("win");
    }

    /**
     * 根据系统返回对应平台执行命令
     * @param command
     * @return
     */
    public static ProcessBuilder getProcessBuilder(String command) {
        if (ShellUtil.isWindows()) {
            return new ProcessBuilder("cmd", "/c", command);
        } else {
            return new ProcessBuilder("bash", "-c", command);
        }
    }

    /**
     * 执行系统命令
     * @param command
     * @return
     */
    public static String executeCommand(String command) {
        try {
            ProcessBuilder pb = ShellUtil.getProcessBuilder(command);
            pb.redirectErrorStream(true);

            Process process = pb.start();
            process.waitFor();

            InputStream inputStream = process.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

            String line;
            StringBuilder result = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                result.append(line);

                // 换行符
                result.append(System.lineSeparator());
            }

            process.waitFor();
            inputStream.close();
            reader.close();

            process.destroy();

            return result.toString();
        } catch (InterruptedException | IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        // System.out.println(ShellUtil.executeCommand("echo 'hello'"));
        // hello

        System.out.println(ShellUtil.executeCommand("python math.py 1 2"));
        // 3
    }
}

参考视频文章来源地址https://www.toymoban.com/news/detail-620943.html

  1. JAVA开发必会小技巧8——用代码调用系统指令

到了这里,关于Java:Java程序通过执行系统命令调用Python脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 在java中调用python脚本

    推荐使用第三种方法,因为只有第三种方法使用 Runtime.getRuntime() 才能执行含有第三方库(numpy,matlab,pandas等库)的python脚本。 1.首先在maven中添加依赖 2.使用Jpython中的PythonInterpreter执行Python语句 1.首先在maven中添加依赖(也是依赖Jpython包) 2.创建一个Python脚本 3.在java中执行p

    2024年02月15日
    浏览(35)
  • 如何通过python写接口自动化脚本对一个需要调用第三方支付的报名流程进行测试?

    对于需要调用第三方支付的报名流程进行接口自动化测试,可以通过以下步骤来编写Python代码: 1. 确认API需求 首先,需要确认报名流程的API需求和预期功能。这涉及到对业务需求的理解和API设计的分析。 2. 安装依赖库 在Python程序中,需要安装requests库(用于发送HTTP请求)和

    2024年02月10日
    浏览(71)
  • 【Linux C】Linux如何执行一个程序(程序存储空间、系统调用、内核调用)

    本节说的空间主要是指内存空间,即程序如何分配和使用内存。 可执行程序,而不是源代码。 C语言程序的存储空间包括以下几个主要部分: 代码段(Text Segment): 也称 正文段 , 代码段是存储C程序的机器代码的区域。它包含了程序的指令集,这些指令由编译器生成,并且

    2024年02月08日
    浏览(48)
  • PowerShell 命令窗口执行 pnpm 命令报错 无法加载文件 pnpm.ps1,因为在此系统上禁止运行脚本

    在 PowerShell 命令行窗口使用 pnpm run dev 启动 vue3-element-admin 报错: pnpm : 无法加载文件 C:UsersyoulaiAppDataRoamingnpmpnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 abo ut_Execution_Policies。 以管理员身份运行 Windows PowerShell 执行

    2024年02月07日
    浏览(88)
  • DevOps系列文章之 java调用python脚本

    在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐) 调用python脚本中的函数 官网地址 首页 | (jython.org) Jython项目提供了Java中的Python实现, 为Python提供了在JVM上运行的好处,并可以访问用Java编写的类。 当前版本(Jyt

    2024年02月14日
    浏览(45)
  • Java程序执行Linux命令

    今天这篇文章我们来用Java程序执行Linux命令。 执行一条命令: 执行服务器中 /home/admin 路径下的test.py文件 可以自己写一个py文件 生成一份txt或excel等 看通过java是否执行了py文件。 https://editor.csdn.net/md/?articleId=128816307 执行多条命令: 下面这段代码是做了三条linux命令 1、 复制

    2024年02月15日
    浏览(43)
  • 【Java可执行命令】(十)JAR文件签名工具 jarsigner:通过数字签名及验证保证代码信任与安全,深入解析 Java的 jarsigner命令~

    jarsigner 是Java Development Kit (JDK) 提供的一个命令行工具,用于对JAR文件进行数字签名 。它的设计目的是提供身份验证和完整性保护,确保在分发和发布Java应用程序时的安全性。 数字签名是一种用于确认数据的来源和完整性的机制。使用私钥对数据进行签名,并使用公钥进行验

    2024年02月13日
    浏览(43)
  • 大数据平台开发——使用Java和Python调用Shell脚本

    大数据平台开发——使用Java和Python调用Shell脚本 在大数据平台开发中,经常会遇到需要调用Shell脚本的场景,倒不是说只能用Shell,毕竟大数据开发到头来一定是个语言无关的事情: 从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala:https://lizhiyong.blog.csdn.net/article/deta

    2023年04月09日
    浏览(48)
  • 如何在Spark Scala/Java应用中调用Python脚本

    本文将介绍如何在 Spark scala 程序中调用 Python 脚本,Spark java程序调用的过程也大体相同 1.PythonRunner 对于运行与 JVM 上的程序(即Scala、Java程序),Spark 提供了 PythonRunner 类。只需要调用PythonRunner 的main方法,就可以在Scala或Java程序中调用Python脚本。在实现上,PythonRunner 基于

    2023年04月24日
    浏览(51)
  • 【Java可执行命令】(十二)依赖分析工具jdeps:通过静态分析字节码并提取相关信息来实现依赖分析 ~

    Java中的 jdeps 命令是一个用于分析类或 JAR 文件的工具,它能够帮助开发者识别出类之间的依赖关系。 jdeps 命令最早于Java 8版本中引入,旨在帮助开发者识别出Java类之间的依赖关系。其设计目的是为了帮助开发者在进行代码重构、迁移、与外部库集成等操作时,更好地了解库

    2024年02月14日
    浏览(78)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包