我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在java中调用python脚本

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在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 npa = 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 sysdef sum(a, b, c):return a+b+cif __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://blog.csdn.net/weixin_48958956/article/details/128333340

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在java中调用python脚本

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何在 Java 中调用 Groovy 脚本?(java怎么调用groovy脚本)

在Java开发中,有时候我们需要调用Groovy脚本以实现更灵活的业务逻辑。Groovy是一种基于Java的动态语言,它具有简洁的语法和丰富的库,能够提高开发效率。下面我们将详细介绍在Java中如何调用Groovy脚本。一、准备工作
如何在 Java 中调用 Groovy 脚本?(java怎么调用groovy脚本)
groovyJava2024-12-16

java中调用groovy脚本

java中调用groovy脚本
2023-06-03

shell中如何调用python脚本

要在shell中调用Python脚本,可以使用以下命令:```python script.py```其中,`python`是Python解释器的命令,`script.py`是要调用的Python脚本的文件名。如果希望在shell中调用Pyt
2023-10-10

如何在VS Code 中调试 Python 脚本?

通常,我们尽最大努力编写符合我们要求的代码,不过,大多数情况下,代码在第一次运行时都会报错,或者根本不工作,这时就需要调试代码。调试是检测和删除代码中的错误或非预期行为的过程。

C++中怎么调用Python脚本

C++中怎么调用Python脚本,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。#test function def add(a,b): print "in py
2023-06-17

如何在Shell脚本中调用另一个脚本

如何在Shell脚本中调用另一个脚本?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。假如有脚本 first.sh:#!/bin/bash#------------------
2023-06-09

怎么在Shell脚本中调用另一个脚本

这期内容当中小编将会给大家带来有关怎么在Shell脚本中调用另一个脚本,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。forkfork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调
2023-06-09

jmeter调用python脚本 入

参考文章1;Jmeter 运行 Python 代码进行 AK/SK 认证 (使用 OS Process Sampler)思路是;jmeter调用shell,用shell执行py 参考文章2: Jmeter执行python脚本函数使用说明jm
2023-01-31

Java 如何实现对 shell 脚本的调用?(java如何调用shell脚本)

在Java开发中,有时需要调用shell脚本以完成一些特定的任务,比如系统管理、文件处理等。下面将详细介绍Java如何调用shell脚本的步骤。一、准备工作确保系统中已经安装了所需的shell环境
Java 如何实现对 shell 脚本的调用?(java如何调用shell脚本)
Javashell2024-12-14

java如何调用Groovy脚本

这篇文章主要介绍了java如何调用Groovy脚本问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-14

JAVA如何调用Shell脚本

在实际项目中,Java有时候需要调用C写出来的东西,除了JNI以外,我认为一种比较好的方法是JAVA调用Shell。先把C写出来的make成可执行文件,然后再写一个shell脚本执行该可执行文件,最后是JAVA调用该shell脚本。JAVA
2023-05-31

python中如何调试脚本

小编给大家分享一下python中如何调试脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!调试脚本我们可以在 模块的帮助下在 Python 脚本中设置断点。请按照
2023-06-27

Java怎么调用groovy脚本

这篇文章主要介绍“Java怎么调用groovy脚本”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java怎么调用groovy脚本”文章能帮助大家解决问题。使用方式GroovyShellGroovyS
2023-07-06

java怎样调用shell脚本

这篇文章主要介绍java怎样调用shell脚本,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、通过ProcessBuilder进行调度这种方法比较直观,而且参数的设置也比较方便。ProcessBuilder pb
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录