Python Process IOException: поток закрыт - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь ввести значения, которые запрашивает моя программа simulator.py.Если я пытаюсь закрыть буферизованную программу записи в первое «если», то я получаю Stream Closed ERROR.Если я попытаюсь выполнить сброс, второе значение не будет передано. (Также моя программа на Python запрашивает значение дважды, а затем выводит сообщение каждые 5 секунд).

import java.io.*;
import java.util.Scanner;

public class Main {

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

    Runtime rt = Runtime.getRuntime();
    String commands = "python C:\\Users\\Alex\\Desktop\\PythonProjects\\simulator.py";
    Process proc = rt.exec(commands);
    BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));

    String line = "";
    int c;

    while ((c = in.read()) != -1) {
        line = line + (char) c;
        System.out.println(line);
        if (line.equals("Please enter your phone (or bot token): ")) {
            System.out.println("Enter Phone Number : ");
            out.write(readTerminal());
            out.newLine();
            out.flush(); // Passes the value
            //out.close(); // Passes the value
            line="";

        } else if (line.equals("Please enter the number sent to you : ")) {
            System.out.println("Enter Number : ");
            out.write(readTerminal()); // line:35
            out.newLine();
            out.flush(); // Doesnt pass the value in
            //out.close(); // java.io.IOException: Stream closed , on line 35
        }
    }
    //out.close();
}

public static String readTerminal() {
    Scanner scan = new Scanner(System.in);
    return scan.nextLine();
}

1 Ответ

0 голосов
/ 21 октября 2018

Проблема была в команде, мне пришлось запустить python с небуферизованным флагом -u

String commands = "python -u C:\\Users\\Alex\\Desktop\\PythonProjects\\simulator.py";

https://stackoverflow.com/a/35213386/9093685

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...