Python實(shí)現(xiàn)控制臺輸入密碼的方法
本文實(shí)例講述了Python實(shí)現(xiàn)控制臺輸入密碼的方法。分享給大家供大家參考。具體如下:
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: 很安全,但是看不到輸入的位數(shù),會讓人覺得有點(diǎn)不習(xí)慣,不知道的還以為沒有在輸入..
3. msvcrt.getch() :
代碼如下:
import msvcrt, sys def pwd_input(): chars = [] while True: newChar = msvcrt.getch() if newChar in '\r\n': # 如果是換行,則輸入結(jié)束 print '' break elif newChar == '\b': # 如果是退格,則刪除末尾一位 if chars: del chars[-1] sys.stdout.write('\b') # 刪除一個星號,但是不知道為什么不能執(zhí)行... else: chars.append(newChar) sys.stdout.write('*') # 顯示為星號 print ''.join(chars) pwd = pwd_input() print pwd # ****** # aaaaaa
Note: 解決了第二種方法不能顯示輸入位數(shù)的問題,但是如果按退格鍵(backspace)的話,雖然實(shí)際的是退格了,
但控制臺卻沒有顯示相應(yīng)的退格,比如,當(dāng)前輸入是:abcd,顯示為:****,然后現(xiàn)在打一個退格鍵,實(shí)際
輸入為:abc,而顯示仍為:****。不知道為什么 sys.stdout.write('\b') 這行沒有執(zhí)行,估計是和使用msvcrt.getch()有關(guān)系。感興趣的朋友可以進(jìn)一步研究一下。
希望本文所述對大家的Python程序設(shè)計有所幫助。
相關(guān)文章
python利用opencv實(shí)現(xiàn)SIFT特征提取與匹配
這篇文章主要為大家詳細(xì)介紹了python利用opencv實(shí)現(xiàn)SIFT特征提取與匹配,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03Django框架實(shí)現(xiàn)的分頁demo示例
這篇文章主要介紹了Django框架實(shí)現(xiàn)的分頁demo,結(jié)合實(shí)例形式分析了Django框架分頁的步驟、原理、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-05-05pycharm恢復(fù)默認(rèn)設(shè)置或者是替換pycharm的解釋器實(shí)例
今天小編就為大家分享一篇pycharm恢復(fù)默認(rèn)設(shè)置或者是替換pycharm的解釋器實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10