2013-11-21 4 views
0

Я использую select.select() вместо ввода, потому что мне нужен тайм-аут для ввода. Я использую «конец» аргумент с функцией печати(), потому что я хочу, чтобы мой терминал, чтобы иметь такую ​​строку:Python3: Использование «select.select» с печатью (str, end = '')

Type>TYPE-то здесь

Вместо этого, я не вижу «Type> "до тех пор, пока я не наберу строку и не нажмем enter.

Мой код:

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 
#Made by Devyn Collier Johnson, NCLA, Linux+, LPIC-1, DCTS 
import sys, select 

print('Type > ', end=" ") 
INPUT, VOID0, VOID1 = select.select([sys.stdin], [], [], 3) 

if (INPUT): 
    print('You said, ' + sys.stdin.readline().strip()) 
else: 
    print('You said nothing!') 

Я использую этот скрипт для проверки select.select() и печать (улица, конец =»«). Я прочитал этот пост (How can I suppress the newline after a print statement?) и официальную документацию Python3 для обеих команд.

ответ

1

stdout буферизуется по умолчанию, чтобы заставить его показать вам необходимо очистить его:

print('Type > ', end='') 
sys.stdout.flush() 

Обратите внимание, что print также поддерживает это с помощью ключевых аргументов:

print('Type > ', end='', flush=True) 
+0

Спасибо! Это сработало хорошо. Я не могу отметить ваш ответ, пока не пройдет семь минут. Я буду держать эту вкладку открытой в своем браузере, чтобы я мог отметить ваш ответ. –

+0

@DevynCollierJohnson Не стоит беспокоиться - я понимаю, это не случайно, я получил ответ на ответ с этим предложением select, а затем этот вопрос появляется :) –

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