Получение ввода пароля командной строки в Python
Вы знаете, как в Linux, когда вы пытаетесь использовать материал Sudo, он говорит вам ввести пароль и, по мере ввода, ничего не отображается в окне терминала (пароль не отображается)?
Есть ли способ сделать это в Python? Я работаю над script, который требует такой конфиденциальной информации и хотел бы, чтобы он был скрыт, когда я его печатаю.
Другими словами, я хочу получить пароль от пользователя без указания пароля.
Ответы
Ответ 1
Используйте getpass.getpass()
:
from getpass import getpass
password = getpass()
Необязательный запрос может быть передан в качестве параметра; по умолчанию установлено значение "Password: "
.
Обратите внимание, что для этой функции требуется соответствующий терминал, поэтому она может отключить эхо-символы напечатанных символов - для получения дополнительной информации см. "GetPassWarning: не удается управлять эхо-сигналом на терминале" при запуске из IDLE.
Ответ 2
import getpass
pswd = getpass.getpass('Password:')
getpass работает в Linux, Windows и Mac.
Ответ 3
Используйте getpass для этой цели.
getpass.getpass - запрашивать пароль для пользователя без эха
Ответ 4
Этот код будет печатать звездочку вместо каждой буквы.
import sys
import msvcrt
passwor = ''
while True:
x = msvcrt.getch()
if x == '\r':
break
sys.stdout.write('*')
passwor +=x
print '\n'+passwor
Ответ 5
Используйте это, чтобы повторно запросить пароль, если вставленный проход не является мировым hello
:
import getpass
password = getpass.getpass('Insert your password:')
while password != 'hello':
print('... Sorry.. Wrong pass')
password = getpass.getpass('Insert your password again:')
Ответ 6
15.7. getpass - Портативный ввод пароля
#!/usr/bin/python3
from getpass import getpass
passwd = getpass("password: ")
print(passwd)
Вы можете прочитать больше здесь
Ответ 7
import getpass
p = str("null") # user input start value
pas = str("password") # password value
while p != pas:
p = getpass.getpass("Insert your password: ") # password input
print("ay") # when you get the password, the output is "ay"