Leia a senha do stdin
-
21-09-2019 - |
Pergunta
Cenário: um programa interativo da CLI Python, que precisa de uma senha. Isso significa também, não há solução de GUI possível.
Em Bash, eu consegui uma senha lida sem melhorá-la na tela via
read -s
Existe algo semelhante para Python? Ou seja,
password = raw_input('Password: ', dont_print_statement_back_to_screen)
Alternativa: Substitua os caracteres digitados por '*' antes de enviá -los de volta à tela (também conhecido como estilo navegador ').
Solução
>>> import getpass
>>> pw = getpass.getpass()
Outras dicas
Sim, getpass
: "Peça ao usuário uma senha sem ecoar."
Editar: Eu ainda não tinha brincado com este módulo, então é isso que eu acabei de preparar (embora não ficaria surpreso se você encontrar código semelhante em todo o lugar, no entanto):
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
(Este é o python 3.x; use raw_input
ao invés de input
Ao usar o Python 2.x.)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow