Я использую следующий код (отсюда Как поместить текст в строку ввода: как запросить ввод данных пользователем в командной строке, предоставив ответ «по умолчанию», который пользователь может редактировать или удалять? ), чтобы предложить пользователю изменить строку по умолчанию (в Windows):
import win32console
_stdin = win32console.GetStdHandle(win32console.STD_INPUT_HANDLE)
def input_def(prompt, default=''):
keys = []
for c in str(default):
evt = win32console.PyINPUT_RECORDType(win32console.KEY_EVENT)
evt.Char = c
evt.RepeatCount = 1
evt.KeyDown = True
keys.append(evt)
_stdin.WriteConsoleInput(keys)
return input(prompt)
if __name__ == '__main__':
name = input_def('Folder name: ', 'it works!!!')
print()
print(name)
Моя проблема в том, что иногда один или несколько символов добавляются в мою строку по умолчанию, большую часть времени в начале.То есть приведенный выше код будет отображать, например, Folder name: Ait works!!!
в консоли.
Моя переменная keys
имеет правильную длину, поэтому я думаю, что с _stdin
что-то не так.Это когда _stdin
инициализируется _stdin = win32console.GetStdHandle(win32console.STD_INPUT_HANDLE)
?Как я могу избавиться от этих случайных символов?