2017-11-07 9 views
2

ユーザーパスワードの強さをチェックする小さなプログラムを作成しようとしています。ユーザーがパスワードを入力するように求められたら、テキスト入力の代わりに入力をアスタリスクまたはドットで表示します。この入力を隠す方法はありますか?getpass()を使用してユーザーパスワードを入力時に非表示にする方法

私はgetpassを使用して、入力を試行して非表示にしました。

from getpass import getpass 
    passwd = getpass('Please enter your password') 

これは私に次の警告メッセージが得られます。

警告(警告モジュールから): ファイルを "C:\プログラムファイル(x86の)\ Python36-32 \ libに\ getpass.py" 、line 100 return fallback_getpass(プロンプト、ストリーム) GetPassWarning:端末のエコーを制御できません。 警告:パスワード入力がエコー表示されることがあります。 パスワードを入力してください:

パスワードが行に入力されているが、代わりにastrisksを考え出すのには、元の文字を思い付くをthis_is_my_password。

プログラムはパスワードの強度をチェックするので、パスワードをアスタリスクとして保存せずに元の文字として保存する必要があります。

また、これは、ユーザーのパスワードが表示されたときにアクションを実行する方法を組み込むための方法です。私はボタンの使用を検討していましたが、それはPythonの領域です。私は自信がないので、別の方法で特定のキーをプログラムすることができます。

プロジェクト用のSudoコード。

userPass = hidden(input("Please enter your password ")) 
if showPassword selected: 
    show the password 
else: 
    move on with the rest of the program 
+1

この質問はあなたに答えるかもしれません。https://stackoverflow.com/questions/35805078/how-do-i-convert-a-password-into-asterisks-while-it-is-being-entered/35805111 –

+1

それはそうではありませんエラー、それは警告です。相違点の1つは、警告は有益であるが混乱しないことである。プログラムは警告後に実行を停止しません。あなたが今働いているもののように思えます。それを突きつけ続ける。 –

+2

このプログラムを実行している環境は何ですか?それが何であれ、 'getpass()'が文字エコーを隠すために使用するいくつかの機能が欠けています。 IDEの中からある種のコードを実行している場合は、代わりにコマンドラインから直接実行してみてください。 – jasonharper

答えて

1

警告は、基本的には、あなたはPythonは、通常のインタラクティブIOCTLはアスタリスクのみの機能を実装するために呼び出して使用することはできません環境でプログラムを実行していることを意味します。 IDEの内部からプログラムを実行すると、基本的にIDEが擬似端末でプログラムを実行します。代わりにコマンドラインで実行してみてください。

2

getpassモジュールは、端末がオフにエコーなっていることを除いて、ちょうどinput()ように動作しますgetpass機能が含まれています。

結果は入力したパスワードで、強さを判断したり、必要に応じて印刷したりできますが、ユーザーがパスワードを入力している間は、プロンプトを除いて何も印刷されません。

>>> from getpass import getpass 
>>> passwd = getpass('Please enter your password') 
Please enter your password 
>>> print passwd 
This is my password 
+0

このコードを使用しようとしましたが、エラーメッセージが表示されます(上記の編集済みの記事を参照) –

関連する問題