[英]Java - ProcessBuilder is not outputting my python file
一些上下文:我試圖在Java上創建GUI,並在單擊GUI上的按鈕后運行python代碼。 例如,如果我在Java GUI上按啟動鍵,它將在文件.py上運行python代碼。
為什么不輸出任何東西? 您也可以通過創建測試python文件,然后在下面的代碼中輸入您自己的文件位置來進行嘗試。
到目前為止的代碼:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import javax.swing.JFrame;
public class main_gui extends JFrame {
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder("cmd.exe",
"cd \"G:\\...Javaa\\filetranslatorapplication\\file_translator_app.py");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) {
break;
}
System.out.println(line);
}
}
}
請記住兩件事:
另外,如果有人有更好的方法通過java gui運行python代碼,請隨時向我指出正確的方向。
您的過程根本就沒有意義。
它只是生成一個cmd
,然后將cd
生成一個無效目錄(因為它是一個文件)。
你想要的可能是
cmd /c python g:\your\path\foo.py
要么
cmd /c g:\your\path\foo.py
或簡單地
may\be\full\path\is\needed\python g:\your\path\foo.py
因此,您的代碼應如下所示:
ProcessBuilder builder
= new ProcessBuilder("cmd.exe", "/c", "python", "g:\\yourpath\\file_translator_app.py");
// or
// = new ProcessBuilder("python", "g:\\yourpath\\file_translator_app.py");
// or
// = new ProcessBuilder("cmd", "/c", "g:\\yourpath\\file_translator_app.py");
以下應該為您工作:
ProcessBuilder builder = new ProcessBuilder("cmd",
"/c \"G: && python Javaa\\filetranslatorapplication\\file_translator_app.py\"");
當我從其他驅動器運行Java應用程序時,將執行此操作。 但是,對於您來說,如果是同一驅動器,則無需切換到G:
您可以使用python
命令執行py文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.