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 ' ': # 如果是換行,則輸入結束 print '' break elif newChar == '': # 如果是退格,則刪除末尾一位 if chars: del chars[-1] sys.stdout.write('') # 刪除一個星號,但是不知道為什么不能執行... else: chars.append(newChar) sys.stdout.write('*') # 顯示為星號 print ''.join(chars) pwd = pwd_input() print pwd # ****** # aaaaaa
Note: 解決了第二種方法不能顯示輸入位數的問題,但是如果按退格鍵(backspace)的話,雖然實際的是退格了,
但控制臺卻沒有顯示相應的退格,比如,當前輸入是:abcd,顯示為:****,然后現在打一個退格鍵,實際
輸入為:abc,而顯示仍為:****。不知道為什么 sys.stdout.write('') 這行沒有執行,估計是和使用msvcrt.getch()有關系。感興趣的朋友可以進一步研究一下。
希望本文所述對大家的Python程序設計有所幫助。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com