177 votes

Lire le mot de passe depuis stdin

Scénario : Un programme interactif CLI Python, qui a besoin d'un mot de passe. Cela signifie également qu'il n'y a pas de solution GUI possible.

En bash, j'ai pu obtenir un mot de passe sans avoir à le redemander à l'écran via

read -s

Existe-t-il quelque chose de similaire pour Python ? Par exemple,

password = raw_input('Password: ', dont_print_statement_back_to_screen)

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

275voto

mjv Points 38081
>>> import getpass
>>> pw = getpass.getpass()

53voto

Stephan202 Points 27707

Oui, getpass : "Demander à l'utilisateur un mot de passe sans écho".

Edita: Je n'ai pas encore joué avec ce module moi-même, donc voici ce que j'ai préparé (ne soyez pas surpris si vous trouvez du code similaire un peu partout, 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

(Il s'agit de Python 3.x ; utilisez raw_input au lieu de input lorsqu'on utilise Python 2.x).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X