這篇文章主要介紹了Python實現控制臺輸入密碼的方法,實例對比分析了幾種輸入密碼的方法,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了Python實現控制臺輸入密碼的方法。分享給大家供大家參考。具體如下:
1. raw_input() :
- pwd = raw_input('password: ')
- print pwd
- # password: aaa
- # aaa
Note: 最簡單的方法,但是不安全
2. getpass.getpass() :
- import getpass
- pwd = getpass.getpass('password: ')
- print pwd
- # password:
- # aaaa
Note: 很安全,但是看不到輸入的位數,會讓人覺得有點不習慣,不知道的還以為沒有在輸入..
3. msvcrt.getch() :
代碼如下:
- import msvcrt, sys
- def pwd_input():
- chars = []
- while True:
- newChar = msvcrt.getch()
- if newChar in '/r/n':
- # 如果是換行,則輸入結束
- print ''
- break
- elif newChar == '/b':
- # 如果是退格,則刪除末尾一位
- if chars:
- del chars[-1]
- sys.stdout.write('/b')
- # 刪除一個星號,但是不知道為什么不能執行...
- else:
- chars.append(newChar)
- sys.stdout.write('*')
- # 顯示為星號
- print ''.join(chars)
- pwd = pwd_input()
- print pwd
- # ******
- # aaaaaa
Note: 解決了第二種方法不能顯示輸入位數的問題,但是如果按退格鍵(backspace)的話,雖然實際的是退格了,
但控制臺卻沒有顯示相應的退格,比如,當前輸入是:abcd,顯示為:****,然后現在打一個退格鍵,實際
輸入為:abc,而顯示仍為:****。不知道為什么 sys.stdout.write('/b') 這行沒有執行,估計是和使用msvcrt.getch()有關系。感興趣的朋友可以進一步研究一下。
希望本文所述對大家的Python程序設計有所幫助。
新聞熱點
疑難解答