java调用python函数
来源:互联网 发布:大数据视频 百度云盘 编辑:程序博客网 时间:2024/05/20 09:08
- java调用python函数
- python函数
- cmd测试
- java函数
- 参考
java调用python函数
项目中需要调用python编写的算法函数,需要在java工程中对py文件进行调研。在网上查到的资料大多数是使用jython。但是发现如果在python中引用其他包需要提前导入。
本方法参考Java代码中调用shell脚本和python脚本并获得输出结果(分为小数据量和大数据量),采取捕捉控制台输出的方法偷懒实现对python函数的调用。
python函数
用于测试的python函数如下:
import sysdef test(a,b): if a>b: print(True) return True else: print(False) return Falseif __name__ == '__main__': print(sys.argv) test(int(sys.argv[1]),int(sys.argv[2]))
cmd测试
cmd命令
$ python e:\test.py 3 4
cmd输出
['e:\test.py', '3', '4']False
其中sys.argv[index]用于获取控制台输入,包括文件名,因此参数index从1开始。
java函数
在java中捕捉控制台输出,也有用InputStream捕捉控制台输出的,本人未实现。
//代码原址参考引用,还有大量输出的多线程方法public String python(String pythonPath, String[] params) { File file = new File(pythonPath); if (!file.exists()){ return "python脚本不存在!"; } String[] command = Arrays.copyOf(new String[]{"python", pythonPath}, params.length + 2); System.arraycopy(params, 0, command, 2, params.length); List<String> res = new ArrayList<>(); try { Process process = Runtime.getRuntime().exec(command, null, null); process.waitFor(); Scanner scanner = new Scanner(process.getInputStream()); while (scanner.hasNextLine()) { String line = scanner.nextLine(); res.add(line); } } catch (Exception e) { e.printStackTrace(); } return "success"; }
经过测试,res成功输出与控制台相同内容。
当可以在python函数的return前print函数返回值,res的最后一行即为输出。
参考
- Java代码中调用shell脚本和python脚本并获得输出结果(分为小数据量和大数据量)
0 0
- python调用java函数
- java调用python函数
- Java调用Python写的tensorflow函数
- C++调用Python函数
- C++调用Python函数
- Python 调用 C函数
- python 动态调用函数
- python 调用 c 函数
- c++调用python函数
- python中调用函数
- python 调用函数
- python 调用函数
- Qt调用Python函数
- 十、Python-调用函数
- Python基础-函数-调用函数
- Java调用Python
- java调用Python文件
- java 调用python
- 列表初始化
- mac终端切换用户
- python string 转dict
- 并查集 File Transfer
- c++第四次作业
- java调用python函数
- JSP
- SpannableString与SpannableStringBuilder使用
- verilog代码编写风格(他人整理)
- 红米4的手机被我刷的基带丢失
- Docker入门记录 [1]
- 综教楼后的那个坑
- 支付宝接口开发注意点
- Jquery中$(document).ready()和window.onload的区别