Программно прерывая raw_input - PullRequest
9 голосов
/ 02 июля 2010

Есть ли способ программно прервать Python raw_input?В частности, я хотел бы представить приглашение пользователю, но также прослушать дескриптор сокета (например, с помощью select) и прервать приглашение, вывести что-нибудь и снова отобразить приглашение, если данные поступают в сокет.

Причина использования raw_input вместо простого выбора в sys.stdin заключается в том, что я хотел бы использовать модуль readline для обеспечения функциональности редактирования строки для приглашения.

1 Ответ

2 голосов
/ 03 июля 2010

Насколько я знаю ... "Вроде".

raw_input - это блокировка, поэтому я могу думать только о том, чтобы создать подпроцесс / поток для получения входных данных, а затем просто связаться с потоком / подпроцессом. Это довольно грязный хак (по крайней мере, мне так кажется), но он должен работать на разных платформах. Другой альтернативой, конечно, является использование либо модуля curses в Linux, либо получение этого для Windows.

...