导航:首页 > 编程语言 > javarunpython

javarunpython

发布时间:2023-08-22 09:05:25

java调用python程序问题

Strings;
Processprocess=Runtime.getRuntime().exec("/usr/bin/pythonmy.py");
BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(process.getInputStream());
while((s=bufferedReader.readLine())!=null){
System.out.println(s);
}
process.waitfor();

❷ java调用python时传递的参数问题

需要用到需要用到jython.jar
java example:

public static void main(String[] args) {
//定义参数
String[] args2 = {"arg1","arg2"};
//设置参数
PythonInterpreter.initialize(null, null, args2);
PythonInterpreter interpreter = new PythonInterpreter();
//执行
interpreter.execfile("E:\\jython.py");
System.out.println("----------run over!----------");
}
python的程序:
#!/bin/env python
import time
import sys
argCount = len(sys.argv)
print('before sleep')
time.sleep(5);
print('after sleep')
for str in sys.argv:
print(str)

❸ 怎么在java的flink中调用python程序

1. 在java类中直接执行python语句
此方法需要引用 org.python包,需要下载Jpython。在这里先介绍一下Jpython。下面引入网络的解释:

Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。
这里我建议下载最新版本的Jpython,因为可以使用的python函数库会比老版本的多些,目前最新版本为2.7。
下载jar包请点击Download Jython 2.7.0 - Standalone Jar
下载安装程序请点击Download Jython 2.7.0 - Installer
如果使用maven依赖添加的话,使用下面的语句
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7.0</version>
</dependency>
以上准备好了,就可以直接在java类中写python语句了,具体代码如下:
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("a=[5,2,3,9,4,0]; ");
interpreter.exec("print(sorted(a));"); //此处python语句是3.x版本的语法
interpreter.exec("print sorted(a);"); //此处是python语句是2.x版本的语法
输出结果如下:这里会看到输出的结果都是一样的,也就是说Jpython兼容python2.x和3.x版本的语句,运行速度会比直接运行python程序稍慢一点。
但是每次运行结果都会提示console: Failed to install ”: java.nio.charset.UnsupportedCharsetException: cp0. 这样看起来很烦,因为每次运行结果都会出现红色的提示语句,以为是错误,程序员应该都不愿意看到这一幕,得想个办法解决。
解决方法如下:
在要执行的代码上右键, Run As>Run Configurations,选择第二个页签Arguments,在VM arguments中添加以下语句
-Dpython.console.encoding=UTF-8
然后Apply->Run就可以了。

❹ 怎么使用java运行python脚本

如果是jython,也就是运行在Jvm上的python的话,可以使用JSR223,JDK1.6已经包含了该扩展包。JSR223是一个用于解析多种脚本语言的库包,其中包括Jython。除了JSR223包之外,还需要jython-engine.jar包。
ScriptEngine engine = new ScriptEngineManager().getEngineByName("python");
try
{
engine.eval(new FileReader("./script/listing.py"));
}
catch(ScriptException se)
{
}
catch(IOException ie)
{
}
或者参考:http://www.360doc.com/content/10/0608/23/1404822_32043230.shtml
很久之前用过ScriptEngine,对在Jvm上的脚本语言比如jruby,jython,groovy等支持性都很好,有点忘记了。

❺ java调用python,有第三方包gensim,怎么调用呢,是报错。求教....

Jython(原JPython),是一个用Java语言写的Python解释器。

在没有第三方模块的情况下,通常选择利用Jython来调用Python代码,

它是一个开源的JAR包,你可以到官网下载

一个HelloPython程序

importorg.python.util.PythonInterpreter;

publicclassHelloPython{

publicstaticvoidmain(String[]args){

PythonInterpreterinterpreter=newPythonInterpreter();

interpreter.exec("print('hello')");

}

}

什么是PythonInterpreter?它的中文意思即是“Python解释器”。我们知道Python程序都是通过解释器来执行的,我们在Java中创建一个“解释器”对象,模拟Python解释器的行为,通过exec("Python语句")直接在JVM中执行Python代码,上面代码的输出结果为:hello

在Jvm中执行Python脚本

interpreter.execfile("D:/labs/mytest/hello.py");

如上,将exec改为execfile就可以了。需要注意的是,这个.py文件不能含有第三方模块,因为这个“Python脚本”最终还是在JVM环境下执行的,如果有第三方模块将会报错:javaImportError:Nomolenamedxxx

仅在Java中调用Python编写的函数

先完成一个hello.py代码:

defhello():

return'Hello'

在Java代码中调用这个函数:

importorg.python.core.PyFunction;

importorg.python.core.PyObject;

importorg.python.util.PythonInterpreter;

publicclassHelloPython{

publicstaticvoidmain(String[]args){

PythonInterpreterinterpreter=newPythonInterpreter();

interpreter.execfile("D:/labs/hello.py");

PyFunctionpyFunction=interpreter.get("hello",PyFunction.class);//第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型

PyObjectpyObject=pyFunction.__call__();//调用函数

System.out.println(pyObject);

}

}

上面的代码执行结果为:Hello

即便只是调用一个函数,也必须先加载这个.py文件,之后再通过Jython包中所定义的类获取、调用这个函数。

如果函数需要参数,在Java中必须先将参数转化为对应的“Python类型”,例如:

__call__(newPyInteger(a),newPyInteger(b))

a,b的类型为Java中的int型,还有诸如:PyString(Stringstring)、PyList(Iterator<PyObject>iter)等。

详细可以参考官方的api文档。

包含第三方模块的情况:一个手写识别程序

这是我和舍友合作写的一个小程序,完整代码在这里:

,界面上引用了corejava上的一段代码。Python代码是舍友写的,因为在Python程序中使用了第三方的NumPy模块,导致无法通过Jython执行。下面这个方法纯粹是个人思路,没有深入查资料。核心代码如下:

importjava.io.*;

classPyCaller{

privatestaticfinalStringDATA_SWAP="temp.txt";

privatestaticfinalStringPY_URL=System.getProperty("user.dir")+"\test.py";

(Stringpath){

PrintWriterpw=null;

try{

pw=newPrintWriter(newFileWriter(newFile(DATA_SWAP)));

}catch(IOExceptione){

e.printStackTrace();

}

pw.print(path);

pw.close();

}

publicstaticStringreadAnswer(){

BufferedReaderbr;

Stringanswer=null;

try{

br=newBufferedReader(newFileReader(newFile(DATA_SWAP)));

answer=br.readLine();

}catch(FileNotFoundExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}

returnanswer;

}

publicstaticvoidexecPy(){

Processproc=null;

try{

proc=Runtime.getRuntime().exec("python"+PY_URL);

proc.waitFor();

}catch(IOExceptione){

e.printStackTrace();

}catch(InterruptedExceptione){

e.printStackTrace();

}

}

//测试码

publicstaticvoidmain(String[]args)throwsIOException,InterruptedException{

writeImagePath("D:\labs\mytest\test.jpg");

execPy();

System.out.println(readAnswer());

}

}

实际上就是通过Java执行一个命令行指令。

❻ java执行python脚本获取返回值问题

java执行这个脚本并获取返回值是等待脚本执行完毕再获取返回的。
我不清楚你是通过什么方式来执行的。
不过你可以启动两个线程,一个线程开始执行脚本,一个线程去获取输出。

阅读全文

与javarunpython相关的资料

热点内容
女程序员写的小说 浏览:774
华为路由器ip设置命令 浏览:552
如何打开软件服务器 浏览:756
单片机接口技术及应用 浏览:751
linux下执行脚本文件 浏览:127
拨号加密保护 浏览:435
b站弹幕加密 浏览:601
交友盲盒源码破解 浏览:248
单片机100位百位符号 浏览:686
用友通加密狗坏了 浏览:550
如何在服务器上配置外网网址 浏览:844
阿里云服务器的硬件在哪里 浏览:54
python自动注册谷歌 浏览:330
phpini验证码 浏览:826
解压后的文件怎么驱动 浏览:328
老板要程序员加班 浏览:416
泰尔pdf 浏览:313
视频转码压缩哪款软件好 浏览:649
盯盯拍记录仪下载什么app 浏览:438
新东方新概念英语pdf 浏览:698