如何在Python控制台程序中读取带有回声“ *”的密码?
我正在Windows下使用Python编写控制台程序。 用户需要登录才能使用该程序,当他输入密码时,我希望将其回显为“ *”,同时我可以得到用户输入的内容。
我在标准库中找到了一个名为getpass的模块,但是当您输入(类似于Linux)时,它不会回显任何内容。
谢谢。
-
该
getpass
模块是用Python编写的。您可以轻松地对其进行修改以执行此操作。实际上,这是它的修改版本getpass.win_getpass()
,您可以将其粘贴到代码中:import sys def win_getpass(prompt='Password: ', stream=None): """Prompt for password with echo off, using Windows getch().""" import msvcrt for c in prompt: msvcrt.putch(c) pw = "" while 1: c = msvcrt.getch() if c == '\r' or c == '\n': break if c == '\003': raise KeyboardInterrupt if c == '\b': pw = pw[:-1] msvcrt.putch('\b') else: pw = pw + c msvcrt.putch("*") msvcrt.putch('\r') msvcrt.putch('\n') return pw
但是,您可能需要重新考虑这一点。Linux方式更好;即使只是知道密码中的字符数,对于想要破解它的人来说也是一个重要的提示。