web-dev-qa-db-fra.com

Lire le mot de passe de stdin

Scénario: Un CLI interactif Python, nécessitant un mot de passe. Cela signifie également qu’il n’ya pas de solution graphique possible.

En bash, je pouvais obtenir un mot de passe lu sans le demander à nouveau à l'écran via

read -s

Y at-il quelque chose de similaire pour Python? C'est à dire.,

password = raw_input('Password: ', dont_print_statement_back_to_screen)

Alternative: remplacez les caractères saisis par '*' avant de les renvoyer à l'écran (style navigateur).

178
Boldewyn
>>> import getpass
>>> pw = getpass.getpass()
276
mjv

Oui, getpass : "Inviter l’utilisateur à entrer un mot de passe sans renvoi."

Edit: Je n'avais pas encore joué à ce module, c'est donc ce que je viens de vous concocter (je ne serais pas surpris si vous trouvez un code similaire à tous sur la place, cependant):

import getpass

def login():
    user = input("Username [%s]: " % getpass.getuser())
    if not user:
        user = getpass.getuser()

    pprompt = lambda: (getpass.getpass(), getpass.getpass('Retype password: '))

    p1, p2 = pprompt()
    while p1 != p2:
        print('Passwords do not match. Try again')
        p1, p2 = pprompt()

    return user, p1

(Ceci est Python 3.x; utilisez raw_input au lieu de input lorsque Python 2.x.)

53
Stephan202