如何在Python控制台程序中读取带有回声“ *”的密码?

发布于 2021-01-29 16:56:38

我正在Windows下使用Python编写控制台程序。 用户需要登录才能使用该程序,当他输入密码时,我希望将其回显为“ *”,同时我可以得到用户输入的内容。
我在标准库中找到了一个名为getpass的模块,但是当您输入(类似于Linux)时,它不会回显任何内容。
谢谢。

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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方式更好;即使只是知道密码中的字符数,对于想要破解它的人来说也是一个重要的提示。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看