Страницы

Поиск по вопросам

среда, 24 апреля 2019 г.

Python проверка наличия данных в sys.stdin

Как проверить есть ли данные для чтения в sys.stdin, чтобы программа не останавливалась в ожидании ввода, если их нет.


Ответ

Можно посмотреть, что происходит, если timeout близкий к нулю передать в input_with_timeout(). На Unix, чтобы узнать есть ли данные для чтения:
import select
ready, _, _ = select.select([sys.stdin], [],[], 0)
На Windows, при вводе с консоли:
import msvcrt
ready = msvcrt.kbhit()
В качестве альтернативы, можно использовать асинхронный ввод/вывод (потоки, asyncio, O_NONBLOCK). Примеры для неблокирующего чтения вывода внешней команды

Комментариев нет:

Отправить комментарий