java调用python程序问题汇总:java如何调用python程序;Java调用Python脚本无法得到运行结果;用cmd打开Python;cmd运行Python文件报错

本文详细介绍了如何在Java中调用Python程序,包括如何传递参数及处理运行结果。同时,针对遇到的Java调用Python脚本无结果的问题,分析了原因并给出了解决方案,即检查Python环境和依赖包。最后,简要阐述了如何在命令行(cmd)中运行Python文件及其可能遇到的报错和解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、java如何调用python程序

为了验证该方法可以运行python程序,我们先写一个简单的python脚本,代码如下:

print("你好")

输出“你好”两个字。

下面来看看怎么用Runtime.getRuntime().exec()方法来调用python程序并输出该结果,java代码如下:

public class py_text {

    public static void main(String[] args) {
        try {
            String[] arg = new String[] { "python", "D:\\college\\Python\\project\\java\\bb.py"};
            proc = Runtime.getRuntime().exec(arg);
            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();
        }

    }

输出结果如下图所示:

可以看到运行成功了,但有的朋友可能会问了,怎么在python程序中函数传递参数并执行出结果,下面我就举一例来说明一下。
先写一个python的程序,代码如下:

import sys;

print("你好")

def func(a,b):return a+b;

if __name__ == '__main__':
    a = []
    for i in range(1, len(sys.argv)):
        a.append((int(sys.argv[i])))
    print(func(a[0], a[1]))

 其中sys.argv用于获取参数url1,url2等。而sys.argv[0]代表python程序名,从sys.argv[1]开始代表第一个参数,所以列表从1开始读取参数。
以上代码实现一个两个数做加法的程序,下面看看在java中怎么传递函数参数,代码如下:

public class py_text {

    public static void main(String[] args) {
        Process proc;
        int a = 10;
        int b = 20;

        try {
            String[] arg = new String[] { "python", "D:\\college\\Python\\project\\java\\bb.py", String.valueOf(a), String.valueOf(b) };
            proc = Runtime.getRuntime().exec(arg);
            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();
        }

    }
}

其中args是String[] { “python”,path,url1,url2 }; ,path是python程序所在的路径,url1是参数1,url2是参数2,以此类推。

java程序向python传递了2个参数。分别是a=10;b=20。我们期望返回的结果是a+b=30。

运行java程序,查看返回结果:

返回成功! 

二、Java调用Python脚本无法得到运行结果

介绍使用Java的Runtime.getRuntime().exec()方法执行Python脚本时无法得到运行结果的原因。

Python程序在Pycharm中正常运行,但是在Java中运行结果为空。

可以通过运行如下代码,查看返回值是否为1。如果是1,说明运行Python文件出错啦。

proc = Runtime.getRuntime().exec(arg);
int res=proc.waitFor();
System.out.println(res);

Runtime.getRuntime().exec()方法是利用cmd去执行Python脚本,所以会报错后我们可以去cmd运行python程序,查看报错的地方。

三、用cmd打开Python

cmd的中文名是命令提示符,在Windows系统里可以输入一串命令来进行操作。cmd调用Python文件的步骤如下:

(1)打开cmd;

(2)转到你要运行的文件所在的盘(例如:E盘)。输入:“e:”,然后键入“回车” ;

(3)打开你要运行的文件所在的文件夹(例如:E:\ABC\123)。输入:“cd E:\ABC\123”, 然后键入“回车” ;

(4)运行程序。 输入:“python ***.py”(程序文件的名字) ,然后键入“回车” 。

四、用cmd运行Python文件报错

用cmd运行Python文件后报错:

解决方案:用cmd 执行命令pip install xxx(缺失的包,例如上图显示的“dateutil”)

需要注意的是:对于缺失包dateutil,输入的命令应该为:

pip3 install python-dateutil

直接输入pip install dateutil会报错!

当所有包导入完毕后,首先在cmd中运行,如果可以正常执行的话,在java中调用python程序也将没有问题!

欢迎三连,转载请标明出处。

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值