参考链接:https://www.cnblogs.com/bethansy/p/7614749.html
思路:运用Runtime.getRuntime().exec()函数调用外部文件,并且传入参数,通过BufferedReader将运行结果返回到程序并打印出
python测试代码:
import sys
def main(a):
print(a)
if __name__ == '__main__':
for i in range(1, len(sys.argv)):
a = sys.argv[i]
main(a)
sys.argv[i] 解析: import sys模块
sys.argv[i] 意思是取第 i 个参数。例如我在命令行输入E:\> test.py 参数1 参数2
那么,sys.argv[1]取到的就是参数1,sys.argv[2]取到的就是参数2
sys.argv[0]就是这个程序的名字"test.py"
java程序代码:
package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class test {
public static void main(String[] args) throws IOException {
try {
System.out.println("start");
//需传入的参数
String a = "aaa", b = "bbb", c = "ccc", d = "ddd";
//设置命令行传入参数
String[] args1=new String[]{"python","E:\\test.py",a,b,c,d};
Process pr=Runtime.getRuntime().exec(args1);
//TODO:该方法只能传递字符串
//Process pr = Runtime.getRuntime().exec("python E:\\test.py E:\\test1.mp4");
BufferedReader in = new BufferedReader(new InputStreamReader(
pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
pr.waitFor();
System.out.println("end");
} catch (Exception e) {
e.printStackTrace();
}}
}
运行结果:
start
aaa
bbb
ccc
ddd
end