Python實現星號遮掩的密碼輸入

2021-06-25 12:07:16 字數 781 閱讀 2439

**:

def pwd_input(msg = ''):

import msvcrt, sys

if msg != '':

sys.stdout.write(msg)

chars =

while true:

newchar = msvcrt.getch()

if newchar in '\3\r\n': # 如果是換行,ctrl+c,則輸入結束

print ''

if newchar in '\3': # 如果是ctrl+c,則將輸入清空,返回空字串

chars =

break

elif newchar == '\b': # 如果是退格,則刪除末尾一位

if chars:

del chars[-1]

sys.stdout.write('\b \b') # 左移一位,用空格抹掉星號,再退格

else:

sys.stdout.write('*') # 顯示為星號

return ''.join(chars)

其中,引數msg代表輸入的提示文字。

『\3\r\n』 含義是,如果輸入是ctrl+c,或者是回車符,則輸入結束。因為作業系統的不同,對回車的編碼方式有區別。

'\b \b' 含義是,\b是游標左移一位,相當於按了鍵盤上的左箭頭,再用空格代替掉右側的一位*號,再將游標移回一位。

注意:此**用了底層的i/o模組,甚至接管了鍵盤中斷。

改編自:

shell實現輸入密碼顯示星號

shell指令碼可以使用read s來預設禁止回顯輸入字元,這樣做一定程度上可以保證安全性。但這並不是乙個好的互動,因為對於輸入密碼並不能知道已經輸入了多少個字元。而使用 星號 來代替輸入的字元是乙個很不錯的想法,即保證安全又有好的互動性。程式的實現 首先要實現不顯示輸入字元,這個可以使用命令stt...

帶星號的密碼輸入

在軟體開發中,往往會遇到要求使用者輸入密碼的情況。出於對密碼的保密,輸入的字元是不會顯示到螢幕上的。例如,在登入linux系統時,輸入使用者名稱後,輸入的密碼是不顯示的。可用getch 這個函式,但是在linux檔案下,此函式所在的標頭檔案為curses.h。curses庫是由柏克萊大學的bill ...

python 星號的使用

在呼叫或者使用函式的時候經常會出現 有的時候用乙個,有的時候用兩個,這個含義具體是什麼呢?def fun args print isinstance args,tuple 返回的是true for i in args print i fun 1,2,3 上面的例子表示,我們雖然傳遞了3個引數1,2,...