java调用Python,需要向python脚本里传参数
java 调用python脚本 需要向脚本里传一个二进制数组作为参数 有什么解决方案可以选择?我现在是用“Process pr = Runtime.getRuntime().exec("example.py");”的方法,但是用命令行参数的方式没法子传java的二进制数组给python啊,请问该怎么办啊? 可以吧。具体的我调查一下,给你写个DEMO。 static void runprocess() throws IOException, InterruptedException {
// ProcessBuilder p = new ProcessBuilder("cmd /c dir c:\\", "/b");
String[] args = new String[] {"cmd","/c","dir","c:\\", "/b" };
Process process = Runtime.getRuntime().exec(args);
InputStream inputStream = process.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
try {
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}我写的,执行的是DOS的DIR命令,换成你的PYthon代码应该差不多。 static void runpython() throws IOException, InterruptedException {
String[] args = new String[] {"youpath2python\\python.exe","youscriptpath\\test.py","a","b", "c","d" };
Process process = Runtime.getRuntime().exec(args);
InputStream inputStream = process.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
try {
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}test.py的内容如下:import sys
print "script name:", sys.argv
for i in range(1, len(sys.argv)):
print "Parameter:", i, sys.argv
显示参数 多谢,我试一下您的这种方法
但是我要传的二进制数组实际上是从文件中读取出的二进制流,因为种种原因,不能将文件名传给python脚本,只能由java先读取文件,然后再将二进制流传递给python脚本,最终,python处理完的数据也要以二进制流的形式传递回java程序,而且,这个文件的二进制流可能很大,这么做会不会有问题啊? 回复 5# cuijxin
为什么非要在Python中做文件处理。直接在JAVA中做呗。不行你就直接在Python中处理文件,别处理流了(Python中能处理文件吗?)。
页:
[1]