[python] stdin에서 비밀번호 읽기

시나리오 : 암호가 필요한 대화식 CLI Python 프로그램. 그것은 또한 가능한 GUI 솔루션이 없다는 것을 의미합니다.

bash에서는 화면을 통해 다시 프롬프트하지 않고 암호를 읽을 수 있습니다.

read -s

파이썬과 비슷한 것이 있습니까? 즉,

password = raw_input('Password: ', dont_print_statement_back_to_screen)

대안 : 입력 한 문자를 화면으로 다시 보내기 전에 ‘*’로 바꿉니다 (브라우저 스타일).



답변

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


답변

예, 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입니다. Python 2.x를 사용할 때 raw_input대신 input사용하십시오.)


답변