免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 16701 | 回复: 5
打印 上一主题 下一主题

java调用Python,需要向python脚本里传参数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-08-12 11:28 |只看该作者 |倒序浏览
java 调用python脚本 需要向脚本里传一个二进制数组作为参数 有什么解决方案可以选择?

我现在是用“Process pr = Runtime.getRuntime().exec("example.py");”的方法,但是用命令行参数的方式没法子传java的二进制数组给python啊,请问该怎么办啊?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2015-08-12 13:04 |只看该作者
可以吧。具体的我调查一下,给你写个DEMO。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
3 [报告]
发表于 2015-08-12 13:23 |只看该作者
  1. static void runprocess() throws IOException, InterruptedException {
  2.                 // ProcessBuilder p = new ProcessBuilder("cmd /c dir c:\\", "/b");
  3.                 String[] args = new String[] {"cmd","/c","dir","c:\\", "/b" };
  4.                 Process process = Runtime.getRuntime().exec(args);
  5.                 InputStream inputStream = process.getInputStream();
  6.                 InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
  7.                 BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

  8.                 String line;
  9.                 try {
  10.                         while ((line = bufferedReader.readLine()) != null) {
  11.                                 System.out.println(line);
  12.                         }
  13.                 } catch (IOException e) {
  14.                         e.printStackTrace();
  15.                 }

  16.         }
复制代码
我写的,执行的是DOS的DIR命令,换成你的PYthon代码应该差不多。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
4 [报告]
发表于 2015-08-12 13:30 |只看该作者
  1. static void runpython() throws IOException, InterruptedException {
  2.                 String[] args = new String[] {"youpath2python\\python.exe","youscriptpath\\test.py","a","b", "c","d" };
  3.                 Process process = Runtime.getRuntime().exec(args);
  4.                 InputStream inputStream = process.getInputStream();
  5.                 InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
  6.                 BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

  7.                 String line;
  8.                 try {
  9.                         while ((line = bufferedReader.readLine()) != null) {
  10.                                 System.out.println(line);
  11.                         }
  12.                 } catch (IOException e) {
  13.                         e.printStackTrace();
  14.                 }

  15.         }
复制代码
test.py的内容如下:
  1. import sys
  2. print "script name:", sys.argv[0]
  3. for i in range(1, len(sys.argv)):
  4.     print "Parameter:", i, sys.argv[i]
复制代码
显示参数

论坛徽章:
0
5 [报告]
发表于 2015-08-12 16:51 |只看该作者
多谢,我试一下您的这种方法
但是我要传的二进制数组实际上是从文件中读取出的二进制流,因为种种原因,不能将文件名传给python脚本,只能由java先读取文件,然后再将二进制流传递给python脚本,最终,python处理完的数据也要以二进制流的形式传递回java程序,而且,这个文件的二进制流可能很大,这么做会不会有问题啊?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
6 [报告]
发表于 2015-08-13 11:18 |只看该作者
回复 5# cuijxin


    为什么非要在Python中做文件处理。直接在JAVA中做呗。不行你就直接在Python中处理文件,别处理流了(Python中能处理文件吗?)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP