Lire le mot de passe de stdin
Scénario: un programme Python CLI interactif, qui a besoin d'un mot de passe. Cela signifie aussi qu'il n'y a pas de solution GUI possible.
Dans bash, je pourrais lire un mot de passe sans le demander à nouveau à l'écran via
read -s
Y a - t-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 tapés par ' * 'avant de les renvoyer à l'écran (aka browser' style).
172
demandé sur
BartoszKP
2009-11-19 11:25:58
2 réponses
Oui, getpass
: "demander à l'utilisateur un mot de passe sans faire écho."
Edit: Je n'avais pas encore joué avec ce module moi-même, donc c'est ce que je viens de concocter (Je ne serais pas surpris si vous trouvez du code similaire 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
(Ceci est Python 3.x; utilisation raw_input
au lieu de input
lors de l'utilisation de Python 2.X.)
50
répondu
Stephan202
2009-11-19 08:42:33