gpt4 book ai didi

java - 如何从java正确运行python?

转载 作者:行者123 更新时间:2023-12-02 11:33:14 25 4
gpt4 key购买 nike

我有下一个方法:

public void callPython() throws IOException {
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("python -c \"from test import read_and_show; read_and_show()\" src/main/python");

BufferedReader bfr = new BufferedReader(new InputStreamReader(pr.getInputStream()));
BufferedReader bfre = new BufferedReader(new InputStreamReader(pr.getErrorStream()));
String outputStr = "";
while ((outputStr = bfr.readLine()) != null) {
System.out.println(outputStr);
}
while ((outputStr = bfre.readLine()) != null) {
System.out.println(outputStr);
}
}

在 python 文件中下一个代码:

import os
from stat import *

def read_and_show():
print('worked!')

当我在终端中调用它时,一切正常(在我 cd 到此目录之前):

MacBook-Pro-Nikita-2:python NG$ python -c "from test import read_and_show; read_and_show()"
worked!

当我在 java 代码中运行此代码时,他返回错误:

  File "<string>", line 1
"from
^
SyntaxError: EOL while scanning string literal

我做错了什么?

P.S.:我需要运行 python 方法/类/文件来读取、解析和显示图形数据。但是对于java运行python单一方法时的这种需要(def)

最佳答案

当从 java 执行其他程序时,我发现在 java 中尽可能简单地执行批处理文件更容易

Runtime.getRuntime().exec("chrome.exe www.google.com");

会变成

Runtime.getRuntime().exec("openChrome.bat");

和openChrome.bat:

chrome.exe www.google.com

这使得无需重新编译即可更轻松地测试命令,但如果您需要将变量作为参数传递,则可能会变得复杂

要使用 shell 内置程序,如 echocd,批处理文件可以发挥奇迹(即 echo test | program)

<小时/>

主要缺点是代码旁边会有一个 float 的 .bat 文件

如果打包到 .jar,您可能需要首先 copy the .bat file out of the .jar执行前

关于java - 如何从java正确运行python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49132008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com