**:
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,...