Читать пароль из stdin
сценарий: интерактивной командной строки в Python-программа, которая нужна для ввода пароля. Это также означает, что нет никакого решения GUI.
в bash я мог бы получить пароль для чтения без повторного запроса его на экране через
read -s
есть ли что-то подобное для Python? То есть,
password = raw_input('Password: ', dont_print_statement_back_to_screen)
альтернатива: замените введенные символы на ' * 'перед отправкой их обратно на экран (aka browser' style).
2 ответа:
да
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.)