繁体   English   中英

如何使用 java (Runtime.getRuntime().exec()) 启动 python 程序

[英]How to start a python program using java (Runtime.getRuntime().exec())

我正在编写一个程序,该程序需要在 java 代码的 rest 代码运行之前启动 python 脚本。 但是,我找不到解决问题的方法。 如果有人可以提出解决我面临的问题的方法,我将不胜感激。

代码(我需要在注释“start python”下的部分帮助):

import java.io.IOException;

//makes it easier for user to
//select game/start python
public class gameselect {
    public static void main(String args[]) throws IOException {
        //start python
        try {
            String cmd = "python ngramcount.py";
            Process process = Runtime.getRuntime().exec(cmd);
            process.getInputStream();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        
        //select game
        try {
            Scanner in = new Scanner (System.in);
            game1 g = new game1();
            game2 f = new game2();
            int choice = 0;
            System.out.println("Welcome to TranslateGame!");
            System.out.println("Type 1 for game1 (words) or 2 for game2 (phrases)");
            while (choice != 1 && choice != 2) {
                choice = in.nextInt();
                if (choice != 1 && choice != 2) {
                    System.out.println("No game associated with that number.");
                }
            }
            if (choice == 1) {
                g.game1();
            }
            else if (choice == 2) {
                f.game2();
            }
        }
        catch(IOException e) {
            System.out.println("No.");
        }
    }
}

这是一些您可能可以开始工作的代码。 我还对其进行了评论并提供了一些参考链接,以帮助您了解代码在做什么。

    public static void main(String[] args) throws IOException {

    // I'm using the absolute path for my example.
    String fileName = "C:\\Users\\yourname\\Desktop\\testing.py";

    // Creates a ProcessBuilder
    // doc: https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html
    ProcessBuilder pb = new ProcessBuilder("python", fileName);

    pb.redirectErrorStream(true); // redirect error stream to a standard output stream
    Process process = pb.start(); // Used to start the process

    // Reads the output stream of the process.
    BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String line; // this will be used to read the output line by line. Helpful in troubleshooting.
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }



}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM