2009-11-19 17 views
167

シナリオ:インタラクティブなCLI Pythonプログラムで、パスワードが必要です。つまり、GUIソリューションはありません。私はパスワードがstdinからパスワードを読み取る

read -s 

を介してスクリーン上でそれを再プロンプトを表示せずに読み込ま得ることができますbashで

は、Pythonのための同様のものがありますか?代わりに、タイプされた文字を '*'に置き換えてから、スクリーン(別名ブラウザのスタイル)に戻してください。

答えて

259
>>> import getpass 
>>> pw = getpass.getpass() 
+2

ええ、バッテリーです。 ;-) Pythonのクールなことの1つは、他の言語、特にC言語のバイナリと簡単にバインドできるため、既存のものをたくさん活用することです(getpass()など) – mjv

+1

getpass CLIツールがSTDINを介してデータを供給されているにもかかわらず、自分でパスワードを入力する必要がある状況を扱います。素晴らしいツール! – Tiemen

+1

@Tiemenしかし、パスワードをスクリプトにパイプしても、getpass()が私にプロンプ​​トを表示してパスワードを待っているので、これを行うためのソリューションを探していました。 – Michael

50

はい、「ユーザーにエコーを行わずにパスワードを要求する」

編集:私はまだ自分自身をモジュールこれでプレイしていなかったので、これは(あなたがすべての場所以上のようなコードを見つけた場合しかし、驚くことはないだろう)私はちょうど調理ものです:

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を使用してください)

関連する問題