Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。最近的一个项目需要将python代码转换成java实现,所以用了一下jython。

试用了jython的2.7的版本发现运行一直出错,不知道是不是版本的原因,但是2.5的版本还是可以的。

第一步,先来一个简单的(先确定你已经下载添加了对应的jar包)

java代码:

PythonInterpreter interpreter = new PythonInterpreter();  
interpreter.execfile("/home/桌面/PycharmProjects/first/1.py");

python代码:

print("hello jython")

输出:

第二步:调用方法(不含参数)

java代码:

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("/home/ybf/PycharmProjects/first/1.py");
PyFunction func_first = (PyFunction)interpreter.get("first",PyFunction.class);
PyFunction func_second= (PyFunction)interpreter.get("second",PyFunction.class);
PyObject pyobj = func_second.__call__();
System.out.println(pyobj);

python代码:

def first():
print("first ...........") first() def second():
a=100
b=50
return a+b

输出:

第三步:调用方法(含参数)

java代码:

PythonInterpreter interpreter = new PythonInterpreter(); 
interpreter.execfile("/home/ybf/PycharmProjects/first/1.py");

PyFunction func_third= (PyFunction)interpreter.get("third",PyFunction.class);

PyObject pyobj = func_third.__call__(new PyInteger(4), new PyInteger(2));
System.out.println(pyobj);

python代码:

def third(a,b):
c=sub(a,b)
d=sub(b,a)
return c*d def sub(a,b):
return a-b

输出:

第四步:关于中文处理,这是一个很麻烦的方面,大家可以看下面的例子

java代码:

String a = "你好";
PyFunction func= (PyFunction)interpreter.get("word_process",PyFunction.class);
PyObject pyobj = func.__call__(new PyString(a));
System.out.println(pyobj.toString());

python代码:

def word_process(a):
if a=="你好":
print(True)
else:
print(False)
print(a)
return a

结果:

这里可以看到在Python里面输出在eclipse输出的是?,其实输出的是“你好”,但是因为平台的原因所以显示?(个人的理解),而且大家可以发现在python中的“你好”不等于java里面的“你好”,这方面本人还不知道,不知道有没有大佬知道,怎样处理才返回True,

str(a).encode('utf-8')=="你好".encode("utf-8")这样返回的也是False

第五步:打开txt文本

这里注意python里面的代码,如下:

f=open('src/dic/v.txt','rt')#注意文件路径
while(True):
line=f.readline()
if not line:
break
print(line)

如果这里使用 with open('src/dic/v.txt','rt') as f 但在eclipse报错如下:

今天写到这里,有时间再更新

jython实现java运行python代码的更多相关文章

  1. Jython:java调用python文件之第三方包路径问题

    本文转载自:http://blog.csdn.net/ztf312/article/details/51338060 本方法解决python代码的可移植性,不需要在新机器上配置python环境,只通过 ...

  2. java转python代码

    今天发现一个好玩的工具:可以直接将java转成python 1. 安装工具(windows 环境下面) 先下载antlr: http://www.antlr3.org/download/antlr-3 ...

  3. Python--day02(编程语言、运行python代码、变量)

    day01主要内容回顾 1.进制转换: 二进制: 1111  0101 1010 十六进制          f        5      a 2.内存分布:堆区 和 栈区 外来人只能访问栈区的数据 ...

  4. 在notepad++中运行python代码

    #在notepad++中运行python代码 ''' 1.安装插件pyNPP, 2.允许插件pyNPP中的第一个和第二个选项即可,如果代码过少代码执行一闪而过,可能无法看到,可加入少量sleep时间即 ...

  5. SAE部署Python-让云端自动运行Python代码

    之前写过模拟登录新浪微博的帖子,然而我并没有去爬过微博的数据,觉得有点浪费,于是就想写一个代码来发微博.写完之后觉得如果能自动发微博就好了,但是我又不可能24小时开始(晚上12点后还会断网),也没有v ...

  6. 转-Pycharm中运行Python代码的几种方式

    转自:Pycharm中运行Python代码的几种方式 在pycharm中的Python代码运行会出现各种奇葩的问题,比如,密码输入时不显示或没有提示,给我们带来一些麻烦,下面介绍几种代码运行的几种方式 ...

  7. shell脚本命令 运行python文件&python命令行运行python代码

    单独的python文件运行的时候 报错: 在shell脚本中,运行shell脚本命令:在Python命令行中,运行Python代码.然而,“python hello.py”是一个脚本命令,不是pyth ...

  8. java调用python代码

    同样的我们需要安装jython,具体的步骤如下: 1. 去 http://sourceforge.net/projects/jython/ 下载最新的jython相关的jar包. 2. 下载下来的ja ...

  9. 无需操作系统和虚拟机,直接运行Python代码

    Josh Triplett以一个“笑点”开始了他在PyCon 2015上的演讲:移植Python使其无需操作系统运行:他和他的英特尔同事让解释器能够在GRUB引导程序.BIOS或EFI系统上运行.连演 ...

随机推荐

  1. Linux命令:sed

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  2. LA 3708 && POJ 3154 Graveyard (思维)

    题意:在周长为10000的圆上等距分布着n个雕塑,现在又加入m个,现在让m+n个等距分布,那就得移动一些原有的雕塑,问你移动的最少总距离是多少. 析:首先我们可以知道,至少有一个雕塑是可以不用移动的, ...

  3. 1) Spring_HelloWorld

    1. Spring Tool Suite™ 方式一:下载对应eclipse版本的文件,离线安装 4.4.2 springsource-tool-suite-3.6.4.RELEASE-e4.4.2-u ...

  4. 从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA

    转自: http://blog.csdn.net/v_july_v/article/details/7526689 从LSM-Tree.COLA-Tree谈到StackOverflow.OSQA 作者 ...

  5. afx_msg解释

    以前一直不知道AFX_MSG是什么意思,只是觉得它应该是个消息映射函数,但是具体代表什么意思,会返回一个什么样的值是一点都不清楚,今天查了下资料,把查到的东西放这,以免以后忘了还得再查. 在头文件(D ...

  6. hdu 5045 N个人做M道题的正确率

    http://acm.hdu.edu.cn/showproblem.php?pid=5045 给出N个人做M道题的正确率,每道题只能由一个人做出,并且当所有人都做出来且仅做出一道题时,做过题的人才可以 ...

  7. JdbcTemplate详解

    1.JdbcTemplate操作数据库 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中.同时,为了支 ...

  8. 我的成长比价系列:java web开发过程中遇到的错误一:sql语句换行错误

    字符串换行导致的错误,确切的说是马虎的错误,自己在编写简单的servlet项目时,在StudentDao.java 中的  查询语句:String  sql= "SELECT Type,fl ...

  9. [Ubuntu Version] 如何在terminal 查看当前 ubuntu的版本号

    命令: locate locate /etc/*release/etc/lsb-release/etc/os-release 命令: catcat /etc/os-releaseNAME=" ...

  10. Android sdcard文件读写操作

    这次演示以,安卓原生操作系统 Nexus_6手机进行操作: AndroidManifest.xml配置相关权限: <!-- 增加权限 --> <uses-permission and ...