java调用python库pyd_Java调用Python的两种方式
1、前言
在与第三方程序或语言进行交互时,需要Java调用
2、使用Runtime的exec函数
在使用时需注意img = sys.argv[1]取下标为1的参数
package com;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* Java通过Runtime.exec()调用python
*/
public class CallPythonExec {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) {
run();
}
public static void run() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
String exe = "python";
// String command = "/usr/local/python/videoRec.py";
String command = "D:\\VideoRec\\Python\\videoRec.py";
String param = sdf.format(new Date());
String[] args1 = new String[]{exe, command, param};
System.out.println("result=" + callPython(args1));
}
}, 0, 1000);
}
private static String callPython(String... param) {
String result = "";
Process process = null;
BufferedReader reader = null;
try {
process = Runtime.getRuntime().exec(param);
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (!"".equals(line)) {
result = line;
}
}
// System.out.println("waitFor=" + process.waitFor());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (process != null) process.destroyForcibly();
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
}
/* python 代码
img = sys.argv[1] 参数需下标为1
import sys
def fun(img):
#print("python print="+img)
#print(img)
return img
if __name__ == '__main__':
img = sys.argv[1]
result=fun(img)
print(result)
*/
}
3、使用Jython调用python
在使用时需注意img = sys.argv[0]取下标为0的参数
package com;
import org.python.core.PyFunction;
import org.python.core.PyObject;
import org.python.core.PyString;
import org.python.util.PythonInterpreter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**
* Java通过Jython调用python
*/
public class CallPythonJython {
private static PyFunction pyFunction = null;
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) {
run();
}
public static void run() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
String result = callPython(new PyString(sdf.format(new Date())));
System.out.println(result);
}
}, 0, 1000);
}
public static String callPython(PyObject... params) {
if (pyFunction == null) {
PythonInterpreter interpreter = new PythonInterpreter();
// interpreter.execfile("/usr/local/python/videoRec.py");
interpreter.execfile("D:\\VideoRec\\Python\\videoRec.py");
// 第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型
pyFunction = interpreter.get("fun", PyFunction.class);
}
PyObject pyobj = pyFunction.__call__(params);
return pyobj.asString();
}
/* python 代码
img = sys.argv[0] Jython调用参数需下标为0
import sys
def fun(img):
#print("python print="+img)
#print(img)
return img
if __name__ == '__main__':
img = sys.argv[0]
result=fun(img)
print(result)
*/
}
java调用python库pyd_Java调用Python的两种方式相关推荐
- Python加载csv文件的两种方式
本文主要讲解下Python加载csv文件的两种方式,如果知道如何处理的就不必往下看了! 下面来简单介绍下. 实例中的数据集是kaggle的Digit Recognizer的train.csv文件,数据 ...
- Python操作Neo4j图数据库的两种方式
Python操作Neo4j图数据库的两种方式 前言 1. 用neo4j模块执行CQL ( cypher ) 语句 2. 用py2neo模块通过操作python变量,达到操作neo4j的目的 3. 用p ...
- 简单介绍python连接telnet和ssh的两种方式
本文主要介绍了python连接telnet和ssh的两种方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Telnet 连接方式 #!/usr/bin/env p ...
- python repair修复功能_详解Python修复遥感影像条带的两种方式
GDAL修复Landsat ETM+影像条带 Landsat7 ETM+卫星影像由于卫星传感器故障,导致此后获取的影像出现了条带.如下图所示, 影像中均匀的布满条带. 使用GDAL修复影像条带的代码如 ...
- 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
- java 生成二维码 QRCode、zxing 两种方式
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...
- java 读取css文件_java文件读取的两种方式
JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...
- Python:实现图片裁剪的两种方式——Pillow和OpenCV
原文:https://blog.csdn.net/hfutdog/article/details/82351549 在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还 ...
- Python创建进程、线程的两种方式
代码创建进程和线程的两种方式 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. ...
- Python页面自动化文件上传两种方式
Python页面自动化测试之文件上传的两种方式 --广州_vivi 最近教学过程,学员项目出现测试上传文件无法执行的情况,分析发现学员项目的上传按钮并不是input按钮,导致无法使用直接定位元素方式进 ...
最新文章
- html当作附件发送,MIME以HTML文件作为附件发送电子邮件?
- Oracle函数列表速查
- 数据驱动车主 App 产品优化,轻松搞定用户体验与转化
- 用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变
- 如何通过 C# 自动捕获一个文件的变更?
- python假如输入错误重新输入_认识python之输入(4)
- LintCode_408 二进制求和
- Python常用快捷键整理
- 操作系统的目标和作用
- 微信小程序:微信公众号申请微信小程序并认证的步骤
- 鸟瞰Atlassian认证
- 教育部司长:建议开展琴棋书画等校外培训!
- 计算机网络练习3|河工|周老师
- 【mysql】变量的基本使用
- TX2配置RealSense D455相机SDK和ros驱动
- AI大模型加持,生成式搜索来了!
- 将 vim 外的内容复制并粘贴到 Vim 里使用,如从windows系统复制内容到vim中使用
- 大话Linux发展史
- 详解各种布隆过滤器原理及使用场景
- 如何联系百度CEO兼总裁李彦宏
热门文章
- github操作命令
- 过程计算机控制综合课程设计,自动化10本 12升《计算机控制综合课程设计》任务书...
- linux单次任务调度,go任务调度2(linux的cron调用)
- java 11_JAVA 11初体验
- python seach_python 正则re.search
- php如何传递字符串,如何将PHP字符串传递给Javascript函数调用?
- Sereja and Brackets CodeForces - 380C (树状数组+离线)
- hihocoder-Week243-hiho字符串
- HtmlAgilityPack 使用
- Strom小实例,大小写转换