web-dev-qa-db-ja.com

標準入力からパスワードを読み取る

シナリオ:対話型CLI Pythonプログラム。パスワードが必要です。それは、GUIソリューションが不可能であることも意味します。

Bashでは、画面上で再入力することなくパスワードを読み込むことができました

read -s

Pythonに似たようなものはありますか?つまり、

password = raw_input('Password: ', dont_print_statement_back_to_screen)

別の方法:入力した文字を「*」に置き換えてから、画面(ブラウザスタイル)に戻します。

178
Boldewyn
>>> import getpass
>>> pw = getpass.getpass()
276
mjv

はい、 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を使用する場合、 input の代わりに raw_input を使用します。)

53
Stephan202