一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Java實現調用jython執行python文件的方法

Java實現調用jython執行python文件的方法

2021-04-18 12:47tengxing007 Java教程

這篇文章主要介紹了Java實現調用jython執行python文件的方法,結合實例形式分析了Java調用jython執行python文件的常見操作技巧及相關問題解決方法,需要的朋友可以參考下

本文實例講述了Java實現調用jython執行python文件的方法。分享給大家供大家參考,具體如下:

在web開發時候,經常在web環境使用本地環境的第三方庫什么的,本文講解java如何執行python文件。

網上說方法有三種,其實也就兩種,下面著中介紹第二種通過(jython)。

方法一

?
1
2
3
4
5
6
7
java.lang.Runtime
  Runtime rt = Runtime.getRuntime();
    try {
        Process proc = rt.exec("python /tmp/test.py");
    }catch (Exception e){
      e.printStackTrace();
    }

小計一下:

1、Runtime.getRuntime()可以取得當前JVM的運行時環境,這也是在Java中唯一一個得到運行時環境的方法。

2、Runtime上其他大部分的方法都是實例方法,也就是說每次進行運行時調用時都要用到getRuntime方法。

3、Runtime中的exit方法是退出當前JVM的方法,估計也是唯一的一個吧,因為我看到System類中的exit實際上也是通過調用Runtime.exit()來退出JVM的,這里說明一下Java對Runtime返回值的一般規則(后邊也提到了),0代表正常退出,非0代表異常中止,這只是Java的規則,在各個操作系統中總會發生一些小的混淆。

第二種(重點)

調用jython API

第一步:添加依賴

?
1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.python/jython -->
  <dependency>
   <groupId>org.python</groupId>
   <artifactId>jython</artifactId>
   <version>2.7.0</version>
  </dependency>

第二步:新建一個Test.java測試類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import org.python.util.PythonInterpreter;
import java.util.Properties;
/**
 * Author: 遇見小星
 * Email: [email protected]
 * Date: 17-3-21
 * Time: 下午8:18
 * Describe: jpython test
 */
public class Test {
  public static void main(String []args){
    PythonInterpreter interpreter = new PythonInterpreter();
    interpreter.exec("days=('Mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");
    interpreter.exec("print days[1];");
    interpreter.execfile("/tmp/test.py");
    interpreter.exec("print 'created by tengxing on 2017.3'");
  }
}

第三步:運行Test.java

?
1
2
3
4
Testing started at 下午9:40 ...
Tue
this is test.py
created by tengxing on 2017.3!

進程已結束,退出代碼0

提醒可能報如下異常:

Exception in thread "main" ImportError: Cannot import site module and its dependencies: No module named site
Determine if the following attributes are correct:

原因:沒有初始化 python.import.site

解決:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Test {
  public static void main(String []args){
    Properties props = new Properties();
    props.put("python.home", "path to the Lib folder");
    props.put("python.console.encoding", "UTF-8");
    props.put("python.security.respectJavaAccessibility", "false");
    props.put("python.import.site", "false");
    Properties preprops = System.getProperties();
    PythonInterpreter.initialize(preprops, props, new String[0]);
    PythonInterpreter interpreter = new PythonInterpreter();
    interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");
    interpreter.exec("print days[1];");
    interpreter.execfile("/tmp/test.py");
    interpreter.exec("print 'created by tengxing on 2017.3!'");
  }
}

ok 完美

?
1
2
3
4
5
//調用python中的方法,并且打印結果
PyFunction func = (PyFunction) interpreter.get("adder",PyFunction.class);
int a = 2010, b = 2;
PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b));
System.out.println("anwser = " + pyobj.toString());

參考文章:

http://www.ythuaji.com.cn/article/156875.html

http://www.ythuaji.com.cn/article/135265.html

附:jython.jar點擊此處本站下載

希望本文所述對大家java程序設計有所幫助。

原文鏈接:https://blog.csdn.net/tengxing007/article/details/64546851

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区二区免费视频 | 无颜之月5集全免费看无删除 | 国产亚洲精品一区在线播 | 西西人体大胆啪啪私拍色约约 | 爸爸的宝贝小说全文在线阅读 | 三级午夜宅宅伦不卡在线 | 成人免费在线视频网 | 扒开黑女人p大荫蒂老女人 扒开大腿狠狠挺进视频 | 明星ai智能人脸替换造梦在线播放 | 国产成人精品免费午夜 | 欧美另类亚洲 | 午夜无码国产理论在线 | 国产特黄一级一片免费 | 国产成人理在线观看视频 | 东京道一本热大交乱 | 精品日韩视频 | 日本高清在线播放 | 给我免费观看的视频在线播放 | 啪哆哆| 国产成人h视频在线播放网站 | 国产第一福利视频导航在线 | 蜜桃成熟时1997在线看免费看 | xxx中国bbbwww| 高清黄色直接看 | 国产一区二区三区高清视频 | 皇上好大好硬好涨好深好爽 | 青青青久热国产精品视频 | 日本大片免a费观看在线 | 国产亚洲精aa在线观看不卡 | 扒开放荡老师裙子猛烈的进入 | 亚洲午夜视频 | 乌克兰18sex性hd | 久久学生精品国产自在拍 | 四虎影院地址 | 男女激情视频1000辣妞范 | 天作谜案免费完整版在线观看 | 娇妻与老头绿文小说系列 | 久久综合给会久久狠狠狠 | 色妞女女女女女bbbb | 美女gif趴跪式抽搐动态图 | 91会员 |