getpass — 이식 가능한 비밀번호 입력
getpass — 이식 가능한 비밀번호 입력
getpass 모듈은 사용자에게 비밀번호를 입력받는 두 가지 함수를 제공해요. 이 모듈은 WebAssembly(WASI)에서는 동작하지 않거나 사용할 수 없어요.
본문
함수
getpass.getpass(prompt='Password: ', stream=None, *, echo_char=None) — 비밀번호를 에코 없이 사용자에게 입력받아요. 사용자에게는 문자열 prompt로 메시지가 표시되며, 기본값은 'Password: '예요. Unix에서 프롬프트는 필요 시 replace 오류 처리기를 사용해 파일 유사 객체 stream에 기록돼요. stream은 기본적으로 제어 터미널(/dev/tty)이며, 사용할 수 없으면 sys.stderr로 돌아가요(이 인자는 Windows에서 무시돼요).
echo_char 인자는 입력하는 동안 사용자 입력이 어떻게 표시되는지 제어해요. echo_char가 None(기본값)이면 입력이 숨겨진 상태로 유지돼요. 그렇지 않으면 echo_char는 단일 인쇄 가능한 ASCII 문자여야 하며, 입력된 각 문자는 그것으로 대체돼요. 예를 들어 echo_char='*'는 실제 입력 대신 별표를 표시해요.
에코 없는 입력을 사용할 수 없으면 getpass()는 stream에 경고 메시지를 출력하고 sys.stdin에서 읽는 방식으로 대체하며, GetPassWarning을 발생시켜요.
IDLE 안에서 getpass를 호출하면 입력이 IDLE 창 자체가 아니라 IDLE을 실행한 터미널에서 이루어질 수 있어요. Unix 시스템에서 echo_char가 설정되면 터미널이 비표준(noncanonical) 모드로 동작하도록 설정돼요. 특히 Ctrl+U 같은 줄 편집 단축키가 동작하지 않고 입력에 예상치 못한 문자가 삽입될 수 있어요.
버전 3.14에서 변경: 키보드 피드백을 위한 echo_char 인자가 추가됐어요.
exception getpass.GetPassWarning — 비밀번호 입력이 에코될 수 있을 때 발생하는 UserWarning 하위 클래스예요.
getpass.getuser() — 사용자의 “로그인 이름”을 반환해요. 이 함수는 환경 변수 LOGNAME, USER, LNAME, USERNAME을 순서대로 확인하고, 그중 비어 있지 않은 문자열로 설정된 첫 번째 값을 반환해요. 모두 설정되지 않았다면 pwd 모듈을 지원하는 시스템에서는 비밀번호 데이터베이스의 로그인 이름을 반환하고, 그렇지 않으면 OSError를 발생시켜요.
일반적으로 이 함수는 os.getlogin()보다 선호돼요.
버전 3.13에서 변경: 이전에는 OSError 외에도 다양한 예외가 발생했어요.
참고
보다 안전하고 포괄적인 인증·사용자 상호작용이 필요한 경우 관련 표준 라이브러리 모듈을 함께 참고하세요.