标题中的所有内容真的......
我知道你可以使用
getpass.getpass()
然而,如果分发这样的代码,人们会习惯用'*'来表示他们的字符,这样可能会让他们觉得当他们看不到屏幕上没有字符时他们的键盘不能工作。
我希望在输入期间'example'
显示为'*******'
,以便:
Enter Password: example
将显示为
Enter Password: *******
感谢您的回答
答案 0 :(得分:2)
我为你做了一个解决方案,你可以根据自己的需要进行修改:
pip install getch
。该模块具有通过char获取输入char的方法。创建一个函数,通过char获取用户输入char并在其中打印*
:
#import sys (if option 1. is used)
import getch
def get_password():
p = ''
typed = ''
while True:
typed = getch.getch()
if typed == '\n':
print(typed)
break
p += typed
# Choose one of the following solutions:
# 1. General way. Needs import sys
sys.stdout.write('*')
sys.stdout.flush()
# 2. Python 3 way:
print('*', end='', flush=True)
return p
来自getpass文档:
在Unix上,如果需要,使用replace错误处理程序将提示写入类文件对象流。
stream默认为控制终端(/dev/tty
)或者如果sys.stderr
不可用(在Windows上忽略此参数)。
所以它与上面的函数表现得非常相似,只是我的没有后备选项......
答案 1 :(得分:1)
这个应该这样做:
import msvcrt
import sys
print('Enter your password: ')
password = ''
while True:
pressedKey = msvcrt.getch()
if pressedKey == '\r':
break
else:
password = password+pressedKey
sys.stdout.write('*')
print('\n' + password)
它是MS VC++
- 适用于Windows的Microsoft Visual C ++。根据{{3}}
getpass
使用此模块
答案 2 :(得分:0)
真的停止重新发明轮子了。不要在你的程序中包含这样的东西,而是让它使用密码帮助程序。
见https://stackoverflow.com/a/67327327/701532
当然,如果你写了一个很好的密码助手来在 python 中输入星星,就像我多年前在 shell 中所做的那样......去吧!