如何使用 echo "*" 读取密码在Python控制台程序中?
我正在 Windows 下使用 Python 编写控制台程序。
用户需要登录才能使用该程序,当他输入密码时,我希望它们回显为“*”,同时我可以获取用户输入的内容。
我在标准库中找到了一个名为 getpass 的模块,但是当您输入时它不会回显任何内容(类似 linux)。
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
getpass
模块是用 Python 编写的。您可以轻松修改它来执行此操作。事实上,这里是getpass.win_getpass()
的修改版本,您可以将其粘贴到代码中:但是,您可能需要重新考虑这一点。 Linux方式更好;即使只是知道密码中的字符数,对于想要破解密码的人来说也是一个重要的提示。
The
getpass
module is written in Python. You could easily modify it to do this. In fact, here is a modified version ofgetpass.win_getpass()
that you could just paste into your code:You might want to reconsider this, however. The Linux way is better; even just knowing the number of characters in a password is a significant hint to someone who wants to crack it.
kindall的答案很接近,但它存在退格键不擦除星号以及退格键能够返回到输入提示之外的问题。
尝试:
注意 mscvrt.putwch 不适用于 python 2.x,您需要使用 mscvrt.putch 代替。
kindall's answer is close, but it has issues with backspace not erasing the asterisks, as well as backspace being able to go back beyond the input prompt.
Try:
Note mscvrt.putwch does not work with python 2.x, you need to use mscvrt.putch instead.
您可以使用
getpass
模块。 这并不完全正确回答这个问题是因为 getpass 函数除了提示之外不会向控制台输出任何内容。这样做的原因是它是一个额外的安全层。如果有人在监视您,他们将无法计算出您的密码有多长。以下是如何使用它的示例:
此示例将显示“输入您的密码:”,然后您可以输入您的密码。
You can use the
getpass
module. This doesn't exactly answer the question because the getpass function doesn't output anything to the console except for the prompt. The reason for this is that it's an extra layer of security. If someone is watching over your shoulder, they won't be able to figure out how long your password is.Here's an example of how to use it:
This example will display "Enter your password: " and then you can type in your password.