java程序调用外部python文件并取得返回结果

参考链接: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值