Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Код на python

Саид Раджабов Ученик (103), на голосовании 1 месяц назад
Решил сделать запрос пароля в терминале более безопасным.
Сначала решил использовать библиотеку getpass, но она кривая и не показывает вводимый пароль вовсе.
Потом примкнул к sys и getch, результат уже есть, но захотелось сделать так, чтобы при вводе, число показывалось на 0.2 секунды, а только потом заменялось звёздочкой.
 import sys, getch, time 
 def get_password(prompt="Введите пароль: "): 
     print(prompt, end='', flush=True) 
     pwd = "" 
     while (ch := getch.getch()) not in '\r\n': 
         if ch in '\x08\x7f' and pwd: 
             pwd = pwd[:-1] 
             sys.stdout.write('\b \b') 
         else: 
             pwd += ch 
             sys.stdout.write(ch + '\b*') 
             sys.stdout.flush() 
             time.sleep(0.5) 
     print() 
     return pwd 
 print("Ваш пароль был успешно сохранен:", get_password()) 
Вроде должно работать, но "анимации" нету, что не так?
Голосование за лучший ответ
Рустам Абдрашитов Мастер (1385) 2 месяца назад
Лови
 import sys 
import getch
import time

def get_password(prompt="Введите пароль: "):
print(prompt, end='', flush=True)
pwd = ""

while True:
ch = getch.getch()
if ch in '\r\n':
break
elif ch in '\x08\x7f':
if pwd:
pwd = pwd[:-1]
sys.stdout.write('\b \b')
else:
pwd += ch
sys.stdout.write(ch + '\b*')
sys.stdout.flush()
time.sleep(0.2)

print()
return pwd

password = get_password()
print("Ваш пароль был успешно сохранен:", password)
Саид РаджабовУченик (103) 2 месяца назад
Ты хотя бы его проверял? Не работает
Рустам Абдрашитов Мастер (1385) Саид Раджабов, модули установи гений
Похожие вопросы