Читать пароль из stdin


сценарий: интерактивной командной строки в Python-программа, которая нужна для ввода пароля. Это также означает, что нет никакого решения GUI.

в bash я мог бы получить пароль для чтения без повторного запроса его на экране через

read -s

есть ли что-то подобное для Python? То есть,

password = raw_input('Password: ', dont_print_statement_back_to_screen)

альтернатива: замените введенные символы на ' * 'перед отправкой их обратно на экран (aka browser' style).

2 172

2 ответа:

>>> import getpass
>>> pw = getpass.getpass()

да getpass: "запросите у пользователя пароль без эха."

Edit: я еще не играл с этим модулем, так что это то, что я только что приготовил (не удивлюсь, если вы найдете подобный код повсюду):

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

(это Python 3.x; Используйте raw_input вместо input при использовании Python 2.x.)