1. 任务
调用已有的 demo.py
程序:
程序内容:
import numpy as np
arr = np.array([[1,2],[3,4]])
print("arr:",arr)
2. Java 调用python程序
package leetCode;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestPythonCode {
public static void main(String[] args) {
Process proc;
try {
proc = Runtime.getRuntime().exec("python F://JavaWorkShop/leetCode/src/demo/demo.py");
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
proc.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
效果:
arr: [[1 2]
[3 4]]
3. 带实参的调用python程序
这是调用的python程序demo.py
:
import numpy as np
import sys
def print_arr(shape=None):
#print(tuple(shape))
arr = np.random.random(size=tuple(shape))
print("arr:",arr)
if __name__ == "__main__":
params = []
for i in range(1,len(sys.argv)):
params.append((int(sys.argv[i])))
#print(params)
print_arr(params)
java程序:
package leetCode;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestPythonCode {
public static void main(String[] args) {
Process proc;
try {
int a = 3;
int b = 1;
String[] execArgs = new String[] { "python", "F://JavaWorkShop/leetCode/src/demo/demo.py", String.valueOf(a), String.valueOf(b) };
proc = Runtime.getRuntime().exec(execArgs);
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
proc.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
效果:
arr: [[0.23132626]
[0.90098341]
[0.26998795]]
参考: