Вопрос-Ответ

Getting a hidden password input

Получение скрытого ввода пароля

Вы знаете, как в Linux, когда вы пробуете что-то в Sudo, он сообщает вам ввести пароль, и, когда вы вводите, в окне терминала ничего не отображается (пароль не отображается)?

Есть ли способ сделать это в Python? Я работаю над скриптом, который требует такой конфиденциальной информации, и хотел бы, чтобы она была скрыта, когда я ее набираю.

Другими словами, я хочу получить пароль от пользователя, не показывая пароль.

Переведено автоматически
Ответ 1

Использование getpass.getpass():

from getpass import getpass
password = getpass()

В качестве параметра может быть передано необязательное приглашение; значение по умолчанию - "Password: ".

Обратите внимание, что для этой функции требуется соответствующий терминал, поэтому она может отключить эхо–отображение введенных символов - смотрите “GetPassWarning: невозможно управлять эхом на терминале” при запуске из режима ОЖИДАНИЯ для получения дополнительной информации.

Ответ 2
import getpass

pswd = getpass.getpass('Password:')

getpass работает в Linux, Windows и Mac.

Ответ 3

Этот код выведет звездочку вместо каждой буквы.

import sys
import msvcrt

passwor = ''
while True:
x = msvcrt.getch()
if x == '\r':
break
sys.stdout.write('*')
passwor +=x

print '\n'+passwor
Ответ 4

Обновление ответа @Ahmed ALaa

# import msvcrt
import getch

def getPass():
passwor = ''
while True:
x = getch.getch()
# x = msvcrt.getch().decode("utf-8")
if x == '\r' or x == '\n':
break
print('*', end='', flush=True)
passwor +=x
return passwor

print("\nout=", getPass())

msvcrt используется только для Windows, но getch из PyPI должен работать для обоих (я тестировал только с Linux).
Вы также можете прокомментировать / раскомментировать две строки, чтобы это работало в Windows.

python