首页编程java编程java调用python脚本(python-pptx)

java调用python脚本(python-pptx)

编程之家2026-05-21661次浏览

这篇文章给大家聊聊关于java调用python脚本,以及python-pptx对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

java调用python脚本(python-pptx)

Java怎么调用pyd文件

在做项目的时候,有的时候由于合作人员之间所会的编程语言的不同,会导致项目合作中的一些问题,很多时候需要不同语言之间的调用,这次就分享一下java调用python代码的东西。

一、python代码运行

巧妇难为无米之炊。首先,要确保python环境配置完好,并且相应的python代码可以运行。这个就不在这里进行讲述了,如果有需要可以查看我之前的一些文章。

二、java调用python代码

1、查阅了一些网上资料,看到了很多介绍使用jython调用python代码的例子,不过由于一些原因我没有尝试这个方法,而是直接测试了Runtime.getRuntime().exec(args)这个java库中自带的方法,下面直接切入主题。

2、先直接上代码:

java调用python脚本(python-pptx)

python代码(helloword.py):

# coding:utf-8import numpy as np

if __name__=='__main__':

a= np.ones(3)

print(a) print'恭喜您!java调用python代码成功'

java代码(MyDemo.java):

java调用python脚本(python-pptx)

import java.io.BufferedReader;import java.io.InputStreamReader;public class MyDemo{ public static void main(String[] args){ try{

System.out.println("start");

String[] args1=new String[]{"/home/huan/anaconda2/bin/python","/home/huan/myfile/pythonfile/helloword.py"};

Process pr=Runtime.getRuntime().exec(args1);

BufferedReader in= new BufferedReader(new InputStreamReader(

pr.getInputStream()));

String line; while((line= in.readLine())!= null){

System.out.println(line);

}

in.close();

pr.waitFor();

System.out.println("end");

} catch(Exception e){

e.printStackTrace();

}

}

}

执行结果:

需要注意的是此行代码:

String[] args1=new String[]{"/home/huan/anaconda2/bin/python","/home/huan/myfile/pythonfile/helloword.py"};

这句代码是很重要的,首先一定要设置好你所使用的python的位置,切记不要直接使用python,因为系统会默认使用自带的python,所以一定要设置好你所使用的python的位置,否则可能会出现意想不到的问题(比如说我使用的是anaconda中的python,而ubuntu系统会默认调用自带的python,而我自带的python中并没有numpy库,所以会造成相应的代码不会执行的问题,所以设置好python的位置是很重要的)。还有就是要设置好py文件的位置,使用绝对路径。

还有就是可以看出,此方法可以满足我们python代码中调用第三方库的情况,简单实用。

三、java中向python代码动态传参

python代码(helloword.py):

# coding:utf-8import numpy as npimport sys

if __name__=='__main__':

a= np.ones(3)

print(a) print'恭喜您!java调用python代码成功'

print'脚本名为:%s'%(sys.argv[0]) print'传入的参数为:'

for i in range(1, len(sys.argv)): print'参数:%s'%(sys.argv[i])

java代码(MyDemo.java):

import java.io.BufferedReader;import java.io.InputStreamReader;public class MyDemo{ public static void main(String[] args){ try{

System.out.println("start");

String para1="time";

String para2="sfdjk";

String[] args1= new String[]{"/home/huan/anaconda2/bin/python","/home/huan/myfile/pythonfile/helloword.py",para1,para2};

Process pr= Runtime.getRuntime().exec(args1);

BufferedReader in= new BufferedReader(new InputStreamReader(

pr.getInputStream()));

String line; while((line= in.readLine())!= null){

System.out.println(line);

}

in.close();

pr.waitFor();

System.out.println("end");

} catch(Exception e){

e.printStackTrace();

}

}

}

代码运行结果为:

好了,多余的话就不说了,一切尽在代码中。此处的分享就到这里了。

解决Java调用Python脚本时返回9009错误码的问题

解决Java调用Python脚本返回9009错误码的核心方法是确认Python解释器路径和脚本路径的正确性,并确保文件权限可访问。以下是详细排查和解决方案:

一、确认Python解释器路径检查环境变量配置

在Windows系统中,打开“系统属性”→“高级”→“环境变量”,检查PATH是否包含Python安装路径(如C:Python311或用户目录下的Python路径)。

若未配置,需手动添加路径或直接在Java代码中显式指定解释器路径。

显式指定解释器路径在Java代码中,通过ProcessBuilder的构造函数直接传入Python解释器的绝对路径,避免依赖环境变量。例如:

String pythonInterpreter="C:Python311python.exe";//替换为实际路径String scriptPath="C:CS IAsrcjavafindUSB.py";ProcessBuilder processBuilder= new ProcessBuilder(pythonInterpreter, scriptPath);二、检查Python脚本路径使用绝对路径

避免使用相对路径(如./scripts/findUSB.py),因其依赖Java程序的工作目录。

确认脚本路径中的反斜杠在Java字符串中需转义(如C:pathtoscript.py)或使用正斜杠(C:/path/to/script.py)。

验证文件权限

确保Java进程有权限读取和执行Python脚本。

在Windows中,右键脚本文件→“属性”→“安全”,检查用户或组权限;在Linux/macOS中,使用chmod+r script.py赋予读取权限。

三、代码优化与调试完整代码示例以下代码整合了路径检查、输出解析和异常处理:

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class USBChecker{ public boolean usbConnected(){ try{ String pythonInterpreter="C:Python311python.exe"; String scriptPath="C:CS IAsrcjavafindUSB.py"; ProcessBuilder processBuilder= new ProcessBuilder(pythonInterpreter, scriptPath);//合并错误流(可选,避免脚本错误输出阻塞) processBuilder.redirectErrorStream(true); Process process= processBuilder.start(); BufferedReader reader= new BufferedReader(new InputStreamReader(process.getInputStream())); String line; boolean isConnected= false; while((line= reader.readLine())!= null){ System.out.println("Python Output:"+ line); try{ isConnected= Boolean.parseBoolean(line.trim());} catch(NumberFormatException e){ System.err.println("解析失败:"+ line);}} int exitCode= process.waitFor(); System.out.println("Exit Code:"+ exitCode); return exitCode== 0&& isConnected;} catch(IOException| InterruptedException e){ e.printStackTrace(); return false;}} public static void main(String[] args){ USBChecker checker= new USBChecker(); System.out.println("USB Connected:"+ checker.usbConnected());}}关键调试点

打印Python输出:通过System.out.println输出脚本的每一行结果,确认脚本是否执行及输出格式是否符合预期。

检查退出码:若脚本执行失败(如语法错误),退出码可能为非零,需结合脚本日志进一步排查。

异常处理:捕获IOException(路径错误)和InterruptedException(进程中断),避免程序意外终止。

四、替代方案:使用Java原生库若频繁调用Python脚本且性能要求高,建议改用Java库实现相同功能:

USB检测库:javax.usb:Java标准库(需额外依赖),支持跨平台USB设备枚举。

usb4java:基于libusb的Java绑定,提供更底层的USB控制能力。

优势:避免跨语言调用的开销和路径问题。

代码更易维护,减少依赖项。

五、总结9009错误本质:系统无法定位Python解释器或脚本文件,通常由路径错误或权限不足导致。解决步骤:显式指定Python解释器路径。

使用绝对路径引用脚本文件。

验证文件权限和脚本输出格式。

添加调试信息定位问题。

长期方案:评估是否需用Java库替代Python脚本,平衡开发效率与性能需求。通过系统化排查和代码优化,可高效解决9009错误并提升跨语言调用的稳定性。

java和python是什么

java是什么?Java源自C,拥有跨平台、面向对象、泛型编程的特性,非常受企业的喜欢。

其次,Java语言还具有较高的安全特性,因此Java经常被用在网络环境中。

同时,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。

python是什么?Python是一种解释型脚本语言,其在设计上也坚持了清晰划一的风格,这使得Python成为易读、易维护的语言。

相比于其他语言,Python中的语言语法和语义要简单得多,而且代码也具可读性。在大多数情况下,为了解决某一特定的问题,Python编写所需代码,要比其他流行语言所需的代码少得多。

而且Python中的模块化体系结构,使得导入和使用模块不是编写大块代码,一个成熟的模块生态系统就已经可以帮你解决问题。

因此,对于新手来说,Python是一种很容易上手,并便于维护的语言

java和python区别:1.Python比Java简单,学习成本低,开发效率高

2.Java运行效率高于Python,尤其是纯Python开发的程序,效率极低

3.Java相关资料多,尤其是中文资料

4.Java版本比较稳定,Python2和3不兼容导致大量类库失效

5.Java开发偏向于软件工程,团队协同,Python更适合小型开发

6.Java偏向于商业开发,Python适合于数据分析

7.Java是一种静态类型语言,Python是一种动态类型语言

8.Java中的所有变量需要先声明(类型)才能使用,Python中的变量不需要声明类型

9.Java编译以后才能运行,Python直接就可以运行;

10.JAVA里的块用大括号对包括,Python以冒号+四个空格缩进表示。

11.JAVA的类型要声明,Python的类型不需要。

12.JAVA每行语句以分号结束,Python可以不写分号。

13.实现同一功能时,JAVA要敲的键盘次数一般要比 Python多。

推荐课程:Python基础(周莫烦)

java调用python脚本的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python-pptx、java调用python脚本的信息别忘了在本站进行查找哦。

paypal未满十八岁怎么开(已满十八岁未满十八岁会怀孕吗?)php连接数据库mysql代码(php怎么连接数据库)