输入密码时使用星号

2024-05-18 23:43:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想一个接一个地读char并显示给astrix*。 字符可以显示为*,但我不能通过按Enter退出

这是我的密码:

import sys, tty, termios

def getch():
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    try:
        tty.setraw(sys.stdin.fileno())
        ch = sys.stdin.read(1)
        sys.stdout.write('*')
    except:
        print "ex"
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN,old_settings)
    return ch

如果我输入Enterwherech = sys.stdin.read(1),返回值是多少


Tags: 密码readsettingsstdinsysch字符old
2条回答

为了更安全地读取用户的密码,请检查getpass模块

它可以简单地导入和使用如下所示。但请记住,它不会显示asterik

import getpass

password = getpass.getpass('Your message')

sys.stdin.read(1)的返回值完全取决于您使用的控制台

可以使用getpass.getpass提示用户输入密码。但是请注意,getpass模块没有为unix密码提示显示星号

至于问题的第二部分-sys.stdin.read(1)返回\n\r输入,这取决于您使用的终端

最后,我举了一个例子,如何使用函数来读取CR或LF:

while True:', '\n']: break
    ch = getch()
    if ch in ['\r', '\n']: break
    sys.stdout.flush()

如果你真的需要在unix上显示星号,那就这样

相关问题 更多 >

    热门问题