[Java/Python] java调用python脚本问题记录
Java调用Python的的两种方式
1.Runtime
private static String call_python(String input_argv)
{
String python_py = "C:/Users/lichaoxing/Desktop/python_test.py";
String result = null;
try {
String[] args1 = new String[] { "python", python_py, input_argv};
Process proc=Runtime.getRuntime().exec(args1);
InputStreamReader stdin=new InputStreamReader(proc.getInputStream());
LineNumberReader input=new LineNumberReader(stdin);
result = input.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
2.jython
public class jython
{
public static void main(String[] args)throws Exception
{
try
{
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("C:\\Users\\lichaoxing\\Desktop\\hello.py"); PyFunction pyFunction = interpreter.get("hello", PyFunction.class);
PyObject pyObject = pyFunction.__call__(); System.out.println(pyObject);
}catch(Exception e)
{
e.printStackTrace();
} }
}
遇到的问题:
- 采用jython的方式时,如果python调用了第三方python库的话,就会报错(可能不支持,或者解决办法是指定第三方库的路径,我没试过)
- 还有一个问题是

它的意思好像是没有权限创建一个缓存文件夹,来为己用(windows下的环境,如果linux可能问题会不同,没试过)
- 相比使用Runtime的方式会更方便一些,而且支持python来import第三方库
- 这里特别记录一下,我的python脚本中有读入文件的操作,当时的文件路径是与python在同一文件夹下的,但是java与它们不在同一路径下
导致,运行时,不报错也有输出,最后找到原因就是,被python读的文件路径java是不知道的
(这里很奇怪,明明只是使用java运行一下python脚本,然后python执行,结束将结果输出在输出缓存区,等待java来取,但为什么一定要让java知道这个文件的路径呢)
解决办法:
实验的话,可以直接在python中指定文件的绝对路径
更好的方法,将文件在java中以参数的形式传递给python
[Java/Python] java调用python脚本问题记录的更多相关文章
- Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决
问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...
- java web应用调用python深度学习训练的模型
之前参见了中国软件杯大赛,在大赛中用到了深度学习的相关算法,也训练了一些简单的模型.项目线上平台是用java编写的web应用程序,而深度学习使用的是python语言,这就涉及到了在java代码中调用p ...
- Java程序中调用Python脚本的方法
在程序开发中,有时候需要Java程序中调用相关Python脚本,以下内容记录了先关步骤和可能出现问题的解决办法. 1.在Eclipse中新建Maven工程: 2.pom.xml文件中添加如下依赖包之后 ...
- java中怎么调用python 脚本
调用方法: import java.io.BufferedReader; import java.io.InputStreamReader; public class PythonInvoke { p ...
- [DEBUG] java中用Runtime调用python 简单程序输出null
今天需要在java中调用python脚本,首先考虑的是java自带的Runtime 在ubuntu和win10下分别测试,发现win10报错 java源代码 @Test public void tes ...
- java 通过runtime 调用python 不显示python运行内容的bug
先说下上面问题的原因,上面问题是因为python中用到了第三方的类库,你的电脑上没有那个类库,所以程序没有运行,在控制台也就看不到输出.只要导入那个类库就好... python 导入类库,可以单独下载 ...
- [Python]在python中调用shell脚本,并传入参数-02python操作shell实例
首先创建2个shell脚本文件,测试用. test_shell_no_para.sh 运行时,不需要传递参数 test_shell_2_para.sh 运行时,需要传递2个参数 test_shell ...
- 嵌入Python系列 | 调用Python模块中无参数函数
开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序 ...
- Shell 脚本 —— java 代码远程调用shell脚本重启 tomcat
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.创建maven 工程 maven 依赖: <dependency> <grou ...
- Java实践-远程调用Shell脚本并获取输出信息
1.添加依赖 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-s ...
随机推荐
- HGOI20180831 NOIP2018模拟
input1: 4 4 4 4 4 3 2 4 5 4 5 5 5 1 7 3 2 output1: Yes Yes Yes No 好的吧数学题QwQ考场上没人做出来qwq 就是判断两个矩形能否互相放 ...
- Spring Boot整合MyBatis(使用Spring Tool Suite工具)
1. 创建Spring Boot项目 通过Spring Tool Suite的Spring Starter Project对话框,其实是把项目生成的工作委托http://start.spring.io ...
- 五大常见的MySQL高可用方案
1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 1.1 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据 ...
- java基础基础总结----- StringBuffer(重要)
前言StringBuffer:(常用的方法) StringBuffer与StringBuilder的区别 关于安全与不安全的解释:
- MongoDB 聚合嵌入的数组(扁平化数据+管道)
MongoDB学习教程 先看下要操作的主要数据结构: { "_id" : "000015e0-3e9c-40b3-bd0d-6e7949f455c0", &qu ...
- Mac下配置环境变量重启后不生效解决(.bash_profile vs .bashrc)(bash/zsh下不加载.bashrc问题解决)
参考上一篇文章说明:http://www.cnblogs.com/EasonJim/p/6283094.html 得知加载顺序如下: /etc/profile /etc/paths ~/.bash_p ...
- 前三章 man手册 查看文件
1 – 3章 1.1 man手册: 分1 - 9个区域,可以认为是一个一个小节 把man手册理解为一本书 第一节:可执行程序或shell命令 第二节:系统调用 第三节:库调用 第四节:特殊文件 第五节 ...
- JavaScript执行优先顺序
js在html中的加载执行顺序 1.加载顺序:引入标记<script />的出现顺序, 页面上的Javascript代码是HTML文档的一部分,所以Javascript在页面装载时执行的顺 ...
- java关于图片处理修改图片大小
最近做了一个关于图片浏览的内容.因为图片都是一些证件的资料的扫描件所以比较大,对系统的影响也是非常之大的,有很大可能直接把系统干死.那么我是这么处理的,给大家分享一下.如果大家有好的方案的话一定要早点 ...
- 大话C#中能使用foreach的集合的实现
大家都知道foreach的语法:foreach(var item in items){ Console.Writeln(item);} 通过这样一个简单的语句,就能实现遍历集合items中的所有元素. ...