📜  Python中的getpass()和getuser()

📅  最后修改于: 2020-04-16 01:13:41             🧑  作者: Mango

getpass()提示用户输入密码而不显示出来。getpass模块提供了一种安全的方式来处理密码提示,其中程序通过终端与用户进行交互。
该模块提供两个功能:

  1. getpass()
    getpass.getpass(prompt='Password: ', stream=None)

    getpass()函数用于使用字符串提示来提示用户,并从用户那里读取输入作为密码。读入的默认值“ Password:”将作为字符串返回给调用方。
    让我们通过一些示例来了解其实现。
    示例1:呼叫者未提供提示

    # 一个简单的Python程序演示getpass.getpass()读取密码
    import getpass
    try:
        p = getpass.getpass()
    except Exception as error:
        print('ERROR', error)
    else:
        print('Password entered:', p)

    在此,呼叫者未提供任何提示。因此,将其设置为默认提示“Password”。
    输出:

    $ Python3 getpass_example1.py
    Password:
    ('Password entered:', 'aditi')

    示例2:安全性问题
    有些程序会询问安全性问题,而不是询问密码以提高安全性。在这里,提示可以更改为任何值。

    #一个简单的Python程序来演示getpass.getpass()来读取安全性问题
    import getpass
    p = getpass.getpass(prompt='你最喜欢的花? ')
    if p.lower() == 'rose':
        print('Welcome..!!!')
    else:
        print('The answer entered by you is incorrect..!!!')

    输出:

    $ Python3 getpass_example2.py
    你最喜欢的花?
    Welcome..!!!
    $ Python3 getpass_example2.py
    你最喜欢的花?
    The answer entered by you is incorrect..!!!

    2, getuser()
    getpass.getuser()
    getuser()函数显示用户的登录名。此函数按顺序检查环境变量LOGNAME,USER,LNAME和USERNAME,并返回第一个非空字符串的值。
    例子3: 

    # Python程序演示getpass.getuser()的工作
    import getpass
    user = getpass.getuser()
    while True:
        pwd = getpass.getpass("用户名 : %s" % user)
        if pwd == 'abcd':
            print "Welcome!!!"
            break
        else:
            print "The password you entered is incorrect."

    输出: 

    $ Python3 getpass_example3.py
    用户名 : bot
    Welcome!!!
    $ Python3 getpass_example3.py
    用户名 : bot
    The password you entered is incorrect.