问题描述
我使用以下函数 getPass() 来输入安全密码:
def getPass():
password = ''
while True:
x = getch.getch()
# x = msvcrt.getch().decode("utf-8")
if x == '\r' or x == '\n':
break
print('*',end='',flush=True)
password += x
return password
然而,一个问题是退格不被接受,除非作为新字符:
现实生活中的退格是这样显示的:(“|”符号用于参考)
之前:
••••|
之后:
••• |
但是当我执行 getpass()
时,它在控制台中显示如下:
之前:
****|
然后你按退格键,会变成什么
*** |
实际上变成了
****|*
(注意额外的星星)。
也许我应该将解决方案保留为 print('Type your password:\n(Backspace not accepted: Press Enter to redo))
将用户置于循环中,但这对 21 世纪的用户来说非常烦人。
解决方法
我可以使用标准的 getpass() 模块。
from getpass import getpass
def getPass():
password = getpass.getpass('Enter Your Password\n>>>')
return password
password = getpass()