Я пытаюсь создать «выпадающее меню» для программы CLI, используя escape-последовательности ANSI в Python 2.7.2. Я использую escape-последовательности ANSI, чтобы изменить «параметры» на красный и отобразить их под строкой ввода, а затем очистить их.
Я могу запустить код в системе под управлением Ubuntu 10.04LTS, которая работает под управлением Python 2.6.5, но я не могу запустить программу на компьютере с Windows XP, на котором работает Cygwin minTTY 1.0.3. Есть ли проблема с sys.stdout.flush() в Windows или Cygwin? Это проблема Python 2.6–2.7? Не знаю, с чего начать отладку.
#!C:\Python27\python.exe
#!/usr/bin/python
import sys
table = {1:'foo', 2:'bar', 3:'foo'}
print '\n'
for item in table.keys() :
sys.stdout.write('\033[1;31m %s) %s\033[0m\n' % (item,table[item]))
sys.stdout.flush()
sys.stdout.write('%s' %((item+1)*'\033M'))
sys.stdout.flush()
answer = raw_input("Select foobar: ")
sys.stdout.write('\033[J')
sys.stdout.flush()
print 'You have selected %s' % (table[answer])
Проблема в том, что необработанный вводимый текст не распечатывается до тех пор, пока вы не сделаете свой выбор в minTTY (опять же, код отлично работает в Ubuntu), что противоречит цели текста подсказки. Заранее спасибо - Павел