当前位置: 首页 > 知识库问答 >
问题:

从Java调用python脚本时获取输出的问题

萧伟兆
2023-03-14

我有一个Java程序来调用python脚本。我使用了exec方法。请在下面找到代码片段:

Python程序(从维基百科收集一部分文本)单独运行时,可以提供适当的输出。当从Java调用时,我无法从python程序获得完整的输出。

我使用ready()方法检查了BufferedReader对象的状态(如本文所述,代码进入了无限循环)。

我认为其他人也面临着类似的问题-https://stackoverflow.com/a/20661352/3409074

有人能帮我吗?

      public String enhanceData(String name,String entity) {
            String s = null;
            StringBuffer output = new StringBuffer();
            try{
                String command="python C://enhancer.py "+name+" "+entity;
                Process p = Runtime.getRuntime().exec(command);
                BufferedReader stdError=new BufferedReader(new InputStreamReader(p.getErrorStream()));
                BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
                while ((s = stdInput.readLine()) != null) {

                    System.out.println(s);
                    output.append(s);
                  }

共有1个答案

公良玺
2023-03-14

而循环条件实际上已经读取了一行,所以您在循环中每次都要重复读取它。

while ((s = stdInput.readLine()) != null) {
    //s=stdInput.readLine();  <- don't need this
    System.out.println(s);
    output.append(s);
}

/尼克

 类似资料:
  • 问题内容: 我从PHP脚本执行Python脚本时遇到问题。我的客户端使用Bluehost,因此我使用在此描述的easy_install方法为Python安装了第三方模块(numpy):https ://my.bluehost.com/cgi/help/530?step = 530 为了演示我的问题,我创建了两个python脚本和一个PHP脚本。 hello.py包含: hello-numpy.py

  • 从Java执行Python脚本并接收该脚本输出的最简单方法是什么?我已经寻找了不同的库,如Jepp或Jython,但大多数都过时了。库的另一个问题是,如果我使用一个库,我需要能够轻松地包含一个带有源代码的库(尽管我不需要为库本身提供源代码)。 正因为如此,最简单/最有效的方法是简单地使用runtime.exec调用脚本,然后以某种方式捕获打印输出吗?或者,即使这对我来说非常痛苦,我也可以将Pyth

  • 我试图从java代码调用python脚本。

  • 我正在使用ProcessBuilder从Java调用Python(Anaconda)代码。当我只安装Python时,它工作正常。但是现在我已经删除了Python并安装了Anaconda。调用Python的代码现在不起作用。得到以下错误。 我正在使用python 3.6.1(anaconda3 4.4.0 64位)和以下代码来执行python 有人能帮我吗。

  • 问题内容: 我正在尝试从python这样启动PowerShell脚本: 问题是我得到以下错误: 无法加载文件C:\ Users \ sztomi \ workspace \ myproject \ buildxml.ps1,因为在此系统上禁用了脚本的执行。请参阅“获取有关about_signing的帮助”以了解更多详细信息。 尽管事实上我很早以前确实通过键入管理员运行的PS终端来启用Powersh

  • 问题内容: 我有要从Python脚本调用的Perl脚本。我一直在寻找,并没有成功。我基本上是试图调用向Perl脚本发送1变量的方法,但是不需要Perl脚本的输出,因为它是一个自包含程序。 到目前为止,我想出的是: 只有刚刚开始的Python编程,所以我确定以上内容完全是胡说八道。任何帮助将非常感激。 问题答案: 如果您只想打开通往perl解释器的管道,那么您的方向正确。我认为您唯一缺少的是perl