私は、Windowsの下でPythonでコンソールプログラムを書いています。
ユーザーがプログラムを使用するにはログインする必要があります。パスワードを入力するときに、ユーザーが入力できる内容を取得できる間に「*」と表示されたいと思います。
標準ライブラリでgetpassというモジュールが見つかりましたが、入力すると何も表示されません(linuxのようなものです)。
ありがとうございます。Pythonコンソールプログラムでecho "*"を使ってパスワードを読む方法は?
答えて
getpass
モジュールはPythonで書かれています。これを行うには簡単に修正することができます。実際には、ここであなたは自分のコードに貼り付けることができgetpass.win_getpass()
の修正版がある:
import sys
def win_getpass(prompt='Password: ', stream=None):
"""Prompt for password with echo off, using Windows getch()."""
import msvcrt
for c in prompt:
msvcrt.putch(c)
pw = ""
while 1:
c = msvcrt.getch()
if c == '\r' or c == '\n':
break
if c == '\003':
raise KeyboardInterrupt
if c == '\b':
pw = pw[:-1]
msvcrt.putch('\b')
else:
pw = pw + c
msvcrt.putch("*")
msvcrt.putch('\r')
msvcrt.putch('\n')
return pw
あなたはしかし、これを再考する場合があります。 Linuxの方が優れています。パスワードの文字数を知っているだけでも、それを解読したい人にとっては重要なヒントです。
You can use the getpass
module. getpass関数はプロンプトを除いてコンソールに何も出力しないので、これは正確には答えられません。この理由は、それがセキュリティの余分な層だからです。誰かがあなたの肩を見守っていると、パスワードの長さを知ることができません。
は、ここでそれを使用する方法の例です:「パスワードを入力してください:」
from getpass import getpass
getpass('Enter your password: ')
この例では、表示され、その後、あなたはあなたのパスワードを入力することができます。
'getpass'は元の質問で言及され、アスタリスクをエコーしないので拒否されました。 – kindall
kindallの答えは近いですが、バックスペースに問題があり、バックスペースは入力プロンプトを超えて戻ることができるだけでなく、アスタリスクも消去しません。
試してみてください。
def win_getpass(prompt='Password: ', stream=None):
"""Prompt for password with echo off, using Windows getch()."""
if sys.stdin is not sys.__stdin__:
return fallback_getpass(prompt, stream)
import msvcrt
for c in prompt:
msvcrt.putwch(c)
pw = ""
while 1:
c = msvcrt.getwch()
if c == '\r' or c == '\n':
break
if c == '\003':
raise KeyboardInterrupt
if c == '\b':
if pw == '':
pass
else:
pw = pw[:-1]
msvcrt.putwch('\b')
msvcrt.putwch(" ")
msvcrt.putwch('\b')
else:
pw = pw + c
msvcrt.putwch("*")
msvcrt.putwch('\r')
msvcrt.putwch('\n')
return pw
注mscvrt.putwchは、Python 2.xのでは動作しません、あなたが代わりにmscvrt.putchを使用する必要があります。
- 1. Pandasを使ってPythonでテキストファイルを読む方法
- 2. Pythonを使ってNITFファイルを読む
- 3. Pythonを使ってテキストファイルを読む
- 4. Pythonを使ってWindowsレジストリを読む
- 5. python-docxを使ってcore_propertiesを読む
- 6. PyQGISを使ってプロジェクトをQGISに読み込む方法は?
- 7. HTMLを使ってPython(Django)文字列から改行を読み取ってテキストを読む方法は?
- 8. Linuxでオーディオストリームを使ってPythonでビデオファイルを読むには?
- 9. Pythonのglobパターンを使ってディレクトリ内のファイルを読む方法は?
- 10. パンダを使ってPythonで読むことが朗読
- 11. cssshを使ってCassandraにスキーマファイルを読み込む方法
- 12. pythonを使ってオンラインでファイルに書き込む方法は?
- 13. lispを使ってpdfファイルを読む方法
- 14. pythonスクリプトを使ってsudoにパスワードを入力する方法
- 15. sp.texFileを使ってローカルファイルを読み込む方法は?
- 16. ajaxとdjangoを使ってファイルを読み込む方法は?
- 17. ボタンを使ってsapui5 listを読み込む方法は?
- 18. JQueryから 'echo json_encode()'を読む正しい方法
- 19. webpack2を使ってttfファイルを読み込む方法は?
- 20. ZendX_JQueryプラグインは、echo $ this-> jquery()でjQueryプラグインを読み込む方法です
- 21. Zend_Mail_Storage_Imapを使ってアクセントを読む方法
- 22. PHPでCSSを使ってhtmlページを読み込む方法
- 23. C#/ C++でOCRを使ってcalcを読み込む方法
- 24. 変数を使ってTkinterテキストボックスに読み込む方法は?
- 25. node.jsパスワードを含むXLSXファイルを開く/読む方法
- 26. もっと一般的な方法でPythonを使ってjsonファイルを読むには?次のように
- 27. pythons xlrdモジュールを使ってExcelシートを読む方法
- 28. javaソケットを使ってimapを使ってgmailからメールを読む方法
- 29. python pandasを使ってjsonファイルを読むには?
- 30. Pythonを使って.evtxファイルを読むには?
msvcrt.putch( '\ b')これは動作しないようです – wong2