程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Python實現控制台輸入密碼的方法

Python實現控制台輸入密碼的方法

編輯:更多關於編程

       本文實例講述了Python實現控制台輸入密碼的方法。分享給大家供大家參考。具體如下:

      1. raw_input() :

      ?

    1 2 3 4 pwd = raw_input('password: ') print pwd # password: aaa # aaa

      Note: 最簡單的方法,但是不安全

      2. getpass.getpass() :

      ?

    1 2 3 4 5 import getpass pwd = getpass.getpass('password: ') print pwd # password: # aaaa

      Note: 很安全,但是看不到輸入的位數,會讓人覺得有點不習慣,不知道的還以為沒有在輸入..

      3. msvcrt.getch() :

      代碼如下:

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import msvcrt, sys def pwd_input(): chars = [] while True: newChar = msvcrt.getch() if newChar in 'rn': # 如果是換行,則輸入結束 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程序設計有所幫助。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved