jython实现java运行python代码
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代码的更多相关文章
- Jython:java调用python文件之第三方包路径问题
本文转载自:http://blog.csdn.net/ztf312/article/details/51338060 本方法解决python代码的可移植性,不需要在新机器上配置python环境,只通过 ...
- java转python代码
今天发现一个好玩的工具:可以直接将java转成python 1. 安装工具(windows 环境下面) 先下载antlr: http://www.antlr3.org/download/antlr-3 ...
- Python--day02(编程语言、运行python代码、变量)
day01主要内容回顾 1.进制转换: 二进制: 1111 0101 1010 十六进制 f 5 a 2.内存分布:堆区 和 栈区 外来人只能访问栈区的数据 ...
- 在notepad++中运行python代码
#在notepad++中运行python代码 ''' 1.安装插件pyNPP, 2.允许插件pyNPP中的第一个和第二个选项即可,如果代码过少代码执行一闪而过,可能无法看到,可加入少量sleep时间即 ...
- SAE部署Python-让云端自动运行Python代码
之前写过模拟登录新浪微博的帖子,然而我并没有去爬过微博的数据,觉得有点浪费,于是就想写一个代码来发微博.写完之后觉得如果能自动发微博就好了,但是我又不可能24小时开始(晚上12点后还会断网),也没有v ...
- 转-Pycharm中运行Python代码的几种方式
转自:Pycharm中运行Python代码的几种方式 在pycharm中的Python代码运行会出现各种奇葩的问题,比如,密码输入时不显示或没有提示,给我们带来一些麻烦,下面介绍几种代码运行的几种方式 ...
- shell脚本命令 运行python文件&python命令行运行python代码
单独的python文件运行的时候 报错: 在shell脚本中,运行shell脚本命令:在Python命令行中,运行Python代码.然而,“python hello.py”是一个脚本命令,不是pyth ...
- java调用python代码
同样的我们需要安装jython,具体的步骤如下: 1. 去 http://sourceforge.net/projects/jython/ 下载最新的jython相关的jar包. 2. 下载下来的ja ...
- 无需操作系统和虚拟机,直接运行Python代码
Josh Triplett以一个“笑点”开始了他在PyCon 2015上的演讲:移植Python使其无需操作系统运行:他和他的英特尔同事让解释器能够在GRUB引导程序.BIOS或EFI系统上运行.连演 ...
随机推荐
- UVa 508 Morse Mismatches (模糊暴力)
题意:莫尔斯电码,输入若干个字母的Morse编号,一个字典和若干编码.对于每个编号,判断它可能的是哪个单词, 如果有多个单词精确匹配,输出第一个单词并加一个“!”:如果无法精确匹配,那么在编码尾部增加 ...
- 百度上传插件 WebUploader初始使用
引入资源 使用Web Uploader文件上传需要引入三种资源:JS, CSS, SWF. <!--引入CSS--> <link rel="stylesheet" ...
- (求树的直径)Warm up -- HDU -- 4612
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612 给一个无向图, 加上一条边后,求桥至少有几个: 那我们加的那条边的两个顶点u,v:一定是u,v之 ...
- 快速排序—三路快排 vs 双基准
快速排序被公认为是本世纪最重要的算法之一,这已经不是什么新闻了.对很多语言来说是实际系统排序,包括在Java中的Arrays.sort. 那么快速排序有什么新进展呢? 好吧,就像我刚才提到的那样(Ja ...
- Ansible配置文件
官方配置文件文档 Ansible安装完成之后默认配置文件为:/etc/asnible/ansible.cfg Ansible配置文件内容: cat ansible.cfg # config file ...
- SQL分组合并
STUFF ( character_expression , start , length ,character_expression ) select TcodMedInst_GUID,stuff( ...
- 关于ORACLE的字符窜存储(未完善,欢迎补充)
oracle中常见的用于存储字符串的数据类型有: 数据类型 是否定长 最多存储数 效率排行 备注 是否oracle特有 英文占位 中文占位 char 是 2000 比VARCHAR2稍高 char的长 ...
- sql表与表之间的数据操作
--把一张表的内容更新到另一张表 update 表1 set 表1.Store=t2.Name from 表2 t2 where 表1.id=t2.id --备份一张表 create table ta ...
- 用 python 修改文件中指定的行数
#! /bin/python filename='setup.ini' lines=[] with open(filename,'r') as f: lines=f.readlines() lines ...
- VC API常用函数简单例子大全(1-89)
第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCST ...