java代码中使用jython调用python

zenmehuangle 2014-06-30 04:16:13
在使用jython调用python时
		PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("F:\\project\\test\\src\\error.py");
想得到python是否成功执行的返回值(不是python本身方法的返回值)。
Process p = Runtime.getRuntime().exec(
"python F:\\project\\test\\src\\error.py");
int status = p.waitFor();

类似于直接调用时.waitFor()方法返回来的状态值。因为现在两种方法都需要用到,所以jython调用python也需要找到解决方案。有没有大神用到过的,望不吝指教。
...全文
1620 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zenmehuangle 2014-07-01
  • 打赏
  • 举报
回复
引用 3 楼 fangmingshijie 的回复:
是否成功执行不是根据返回值判断?那你是根据什么判断是否执行了?
Process p = Runtime.getRuntime().exec("python  F:\\project\\test\\src\\error.py");
		InputStream is = p.getInputStream();
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		String line;
		StringBuilder builder = new StringBuilder();
		while ((line = reader.readLine()) != null) {
			//此处是返回值
			builder.append(line);
		}
//		returnObject.setReturnData(builder + "");
		//此处是执行状态
		int status = p.exitValue();
		System.out.println(status);
就像直接调用时候的这个一样,返回值和执行成功的状态时分开的。只要返回来的status为0,哪怕py已经报错了,我也认为他已经成功执行。因为py文件时别人的,我只负责调用,并不负责其正确性。
  • 打赏
  • 举报
回复
是否成功执行不是根据返回值判断?那你是根据什么判断是否执行了?
zenmehuangle 2014-06-30
  • 打赏
  • 举报
回复
引用 1 楼 fangmingshijie 的回复:
你用 PyFunction pyfunction = interpreter.get("函数名", PyFunction.class); PyObject pyobj = pyfunction.__call__(new PyString("参数")); 这个pyobj就是返回值。
这个是函数的返回值,我想得到的是函数是否成功执行的返回值。就像在执行shell脚本的时候一样,0表示执行成功,1表示执行失败。
  • 打赏
  • 举报
回复
你用 PyFunction pyfunction = interpreter.get("函数名", PyFunction.class); PyObject pyobj = pyfunction.__call__(new PyString("参数")); 这个pyobj就是返回值。

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧