Есть идеи, как заменить os.system(stty echo) для работы в Windows?

Мой друг написал код Python на Mac, и теперь я пытаюсь заставить его работать на ноутбуке с Windows.

Особенно раздражает эта строка:

os.system("stty echo")

Кто-нибудь знает эквивалент Windows? Я уже заменил tty на msvcrt, но я полностью застрял на этом.


person Fraidy cat    schedule 10.10.2018    source источник
comment
Вы должны объяснить, что делает команда: stty echo так как многие пользователи не знают, что она делает.   -  person eyllanesc    schedule 10.10.2018
comment
Может ли ваш друг сказать вам, какова цель, ценность, необходимость этого конкретного фрагмента? А потом посмотрите, существует ли что-то похожее? Кроме того, может быть лучше использовать subprocess при взаимодействии с ОС, чем os.system   -  person user9074332    schedule 10.10.2018
comment
Искать echo on в окнах?   -  person atline    schedule 10.10.2018
comment
Был ли в какой-то момент отключен режим консоли ENABLE_ECHO_INPUT? Если нет, вы должны иметь возможность опустить эту строку. В противном случае вам понадобятся ctypes или PyWin32 для вызова GetConsoleMode и SetConsoleMode.   -  person Eryk Sun    schedule 10.10.2018
comment
@lagom, команда echo оболочки CMD не имеет ничего общего с эхом ввода консоли. Самая близкая к stty командная строка Windows — это mode.com, но она управляет лишь небольшим подмножеством режимов консоли для совместимости со старыми пакетными сценариями.   -  person Eryk Sun    schedule 10.10.2018
comment
Объяснение stty echo: Что делает stty raw -echo в OS X   -  person Joshua Goldberg    schedule 04.06.2021


Ответы (1)


В итоге через пару часов нашел решение. Я добавил в код функцию, которая проверяла, был ли это unix-компьютер с Windows, а затем при необходимости использовала msvcrt в качестве замены.

Кажется, я использовал код отсюда, чтобы исправить программу: http://code.activestate.com/recipes/134892-getch-like-unbuffered-character-reading-from-stdin/

person Fraidy cat    schedule 03.11.2018