Java Runtime.getRuntime()。exec仅执行第一行

时间:2019-01-30 10:51:27

标签: java python

我想从Java执行python脚本。 该代码正在进入python文件,但仅执行文件的第一行。

以下是代码:

Process p = Runtime.getRuntime().exec("python "+dir+"/pyfiles/testfile.py");
        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        value = in.readLine();

第一行之后不执行任何操作。 解决办法是什么?

'dir'的值来自

final String dir = System.getProperty("user.dir");

链接到python文件:

https://drive.google.com/file/d/1tvkFTM_Oo5gTS7FyzeNgoeY5DLitFQjD/view?usp=sharing

2 个答案:

答案 0 :(得分:1)

问题似乎出在,您仅在阅读BufferedReader的第一行。因此,请如下更改代码:

Process p = Runtime.getRuntime().exec("python "+dir+"/pyfiles/testfile.py");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));

while ((line = in.readLine()) != null)
{
     System.out.println(line);
}

答案 1 :(得分:0)

当我这样通过时,它运行良好:

String cmd = "python2.7 "+dir+"/pyfiles/getGitFiles.py "+ownerVal+" "+repoVal+" "+folderVal+" "+branchVal+" "+Values.accessToken;
System.out.println(cmd);
Process p = Runtime.getRuntime().exec(cmd);

在“ exec”本身内部传递参数会导致问题。