Прочитать пароль от stdin

Сценарий: интерактивная программа Python CLI, которая нуждается в пароле. Это означает, что графического интерфейса не существует.

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

read -s

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

password = raw_input('Password: ', dont_print_statement_back_to_screen)

Альтернатива: перед тем, как отправить их обратно на экран (например, стиль браузера), замените введенные символы "*".

Ответ 1

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

Ответ 2

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

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

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.)