1、http://sourceforge.net/projects/jython/下载jython包,把其中的jython.jar添加到工程目录

示例:

1、摘自:http://blog.csdn.net/anbo724/article/details/6608632

1.在java类中直接执行python语句

  1. import javax.script.*;
  2. import org.python.util.PythonInterpreter;
  3. import java.io.*;
  4. import static java.lang.System.*;
  5. public class FirstJavaScript
  6. {
  7. public static void main(String args[])
  8. {
  9. PythonInterpreter interpreter = new PythonInterpreter();
  10. interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");
  11. interpreter.exec("print days[1];");
  12. }//main
  13. }

这样得到的结果是Tue,在控制台显示出来,这是直接进行调用的。

2.在java中调用本机python脚本中的函数:

首先建立一个python脚本,名字为:my_utils.py

  1. def adder(a, b):
  2. return a + b

然后建立一个java类,用来测试,

java类代码 FirstJavaScript:

  1. import javax.script.*;
  2. import org.python.core.PyFunction;
  3. import org.python.core.PyInteger;
  4. import org.python.core.PyObject;
  5. import org.python.util.PythonInterpreter;
  6. import java.io.*;
  7. import static java.lang.System.*;
  8. public class FirstJavaScript
  9. {
  10. public static void main(String args[])
  11. {
  12. PythonInterpreter interpreter = new PythonInterpreter();
  13. interpreter.execfile("C:\\Python27\\programs\\my_utils.py");
  14. PyFunction func = (PyFunction)interpreter.get("adder",PyFunction.class);
  15. int a = 2010, b = 2 ;
  16. PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b));
  17. System.out.println("anwser = " + pyobj.toString());
  18. }//main
  19. }

得到的结果是:anwser = 2012

3.使用java直接执行python脚本,

建立脚本inputpy

  1. #open files
  2. print 'hello'
  3. number=[3,5,2,0,6]
  4. print number
  5. number.sort()
  6. print number
  7. number.append(0)
  8. print number
  9. print number.count(0)
  10. print number.index(5)

建立java类,调用这个脚本:

  1. import javax.script.*;
  2. import org.python.core.PyFunction;
  3. import org.python.core.PyInteger;
  4. import org.python.core.PyObject;
  5. import org.python.util.PythonInterpreter;
  6. import java.io.*;
  7. import static java.lang.System.*;
  8. public class FirstJavaScript
  9. {
  10. public static void main(String args[])
  11. {
  12. PythonInterpreter interpreter = new PythonInterpreter();
  13. interpreter.execfile("C:\\Python27\\programs\\input.py");
  14. }//main
  15. }

得到的结果是:

  1. hello
  2. [3, 5, 2, 0, 6]
  3. [0, 2, 3, 5, 6]
  4. [0, 2, 3, 5, 6, 0]
  5. 2
  6. 3

分享: 

在java中调用python方法的更多相关文章

  1. 如何在Java中调用Python代码

    有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...

  2. 在Java中调用Python

    写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...

  3. 在Java中调用Python代码

    极少数时候,我们会碰到类似这样的问题:与A同学合作写代码, A同学只会写Python,不熟悉Java ,而你只会写Java不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方 ...

  4. C#中调用python方法

    最近因为项目设计,有部分使用Python脚本,因此代码中需要调用python方法. 1.首先,在c#中调用python必须安装IronPython,在 http://ironpython.codepl ...

  5. python爬虫简单实现,并在java中调用python脚本,将数据保存在json文件中

    # coding:utf-8 import urllib2 from bs4 import BeautifulSoup import json import sys reload(sys) sys.s ...

  6. 使用Runtime.getRuntime().exec()在java中调用python脚本

    举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...

  7. [转]如何在Java中调用DLL方法

    转载地址:http://developer.51cto.com/art/200906/129773.htm Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用,使用Java开发前台 ...

  8. odoo14 button 事件调用python方法如何传递参数

    1 <field name="user_ids" 2 mode="kanban" 3 nolabel="1" 4 options=&q ...

  9. python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法

    一.什么是继承                                                                          继承是一种创建新的类的方式,在pyth ...

随机推荐

  1. cmake 的使用

    官网教程:https://cmake.org/cmake-tutorial/ 第一个简单的例子 源文件:tutorial.cpp // A simple program that computes t ...

  2. ListView 基础列表组件、水平 列表组件、图标组件

    一.Flutter 列表组件概述 列表布局是我们项目开发中最常用的一种布局方式.Flutter 中我们可以通过 ListView 来定义 列表项,支持垂直和水平方向展示.通过一个属性就可以控制列表的显 ...

  3. Tensorflow2.0默认下载数据集到C盘的修改方法

    jupyter(Win版本)下载数据集会默认到C盘下,Linux会默认到root下,修改方式如下· tf1.x: import os import tensorflow as tftf.disable ...

  4. flex布局构建大屏框架并支持翻页动画、滚动表格功能

      本文将利用flex属性构建大屏可视化界面.界面主要分标题栏.工具栏.数据可视化窗口.其中,翻页动画以及滚动表格功能分别分布在数据可视化界面两侧. 鼠标点击标题,可看到左侧窗口翻转动画: 整体布局效 ...

  5. vCPU 和 CPU 的关系

    vCPU 和 pCPU 的关系不是数量,当被底层虚拟化之后,任何一个 vCPU 都是用到所有的 pCPU 核心总体的百分比,不是某一个核心这么去看的,并没有对应的关系,也不是一个很绝对的分配到具体某个 ...

  6. javascript的阻止默认事件和阻止冒泡事件

    这两个方面的知识,在妙味课堂中有听过,再次复习一下: 原文来自:[http://www.cnblogs.com/Essence/p/4266618.html] 事件冒泡与默认行为   在说事件冒泡之前 ...

  7. 802.11r mixed mode

    * 802.11r mixed mode support – Untill this code(8.0), if you enable 802.11r fast secure roaming, onl ...

  8. 360网安学习笔记——Web安全原理与实践

    网络安全 基本技能: 1.编程语言 2.计算机网络 3.操作系统 4.office 专业技能 1.web安全 2.网络安全 3.渗透测试 4.代码审计 能力提升 1.书籍 2.站点 3.安全平台 We ...

  9. [WC2018]通道(乱搞,迭代)

    [洛谷题面]https://www.luogu.org/problemnew/show/P4221 这个题以及[CTSC2018 暴力写挂]都有类似的乱搞做法能通过考场数据. 具体搞法就是随一个起点, ...

  10. MRCP接口MRCPRecog 简介

    功能:开始一个语音识别,一边讲话,一边识别,需要ASR服务器. 原型:MRCPRecog (grammar, options) grammar ---- 语法文件,可以是一个xml文件 options ...