如何用空闲终端中的星号(****)替换用户输入的每个字符

时间:2016-02-07 01:04:35

标签: python python-3.x passwords

def check_password(x):
while x != ("admin123"):
    x = input("incorrect password \ntry again:")
return x

password = input("please type the password: ")
password = check_password(password)
print ("correct password")

出于安全原因,我试图用IDLE终端中的星号(*)替换用户输入的每个字符,因为用户将输入密码。我找到了一些替代方法,例如getpass()模块,但是getpass()没有为终端IDLE上的用户显示任何内容,告诉他他/她正在输入。因此,我决定寻找替代解决方案而不是getpass()。

1 个答案:

答案 0 :(得分:0)

我已经写了这段代码,它为我做了工作

只需通过getch()

将用户的输入作为一系列字符

不打印输出,然后在每次输入后打印*

import sys
import msvcrt

passwor = ''
while True:
    x = msvcrt.getch()
    if x == '\r':
        break
    sys.stdout.write('*')
    passwor +=x

print '\n'+passwor