2016-02-03 2 views
3

В моем каталоге проектов есть 3 файла ниже.неожиданный результат при общении с stdin другого процесса

rndbet/rndbet.py

while True: 
    s = input() 
    if s == "exit": 
     exit() 
    else: 
     print("I'm rndbet: " + s) 

rndbet/старт

python3 rndbet.py 

mjhd.java

Когда я типа bash -c "cd rndbet&&./start" непосредственно из командной строки, ниже.

$ bash -c "cd rndbet&&./start" 
hi 
I'm rndbet: hi 
exit 

Но работа программы java ведет себя по-разному.

$ java mjhd 
hi 
<- rndbet: I'm rndbet: hi 
exit 
<- rndbet: I'm rndbet: exit 
exit 
<- rndbet: I'm rndbet: exit 

Так что теперь скрипт Python не правильно получить команду exit. Пожалуйста, помогите мне исправить эту проблему.


Я только что нашел проблему, когда сценарий Python запускается с помощью Java, дополнительный характер значения ASCII 13 всегда добавляется в конце отправленного текста. Что такое возможное исправление?

+0

Проблема заключается как в «PrintStream», так и в анонимном потоке, и поэтому выход испорчен. почему вы не помещаете свой «PrintStream» в анонимный «поток» и распечатываете строки? – haifzhan

+0

@haifzhan 'PrintStream' не печатает ничего в моем коде; он скорее «посылает». – xiver77

ответ

0

Хорошо, я нашел простой ответ.

Изменение out.println(in.nextLine()); до out.print(in.nextLine() + '\n') работ.

Смежные вопросы