溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中g(shù)etpass模塊無回顯輸入的示例分析

發(fā)布時(shí)間:2021-08-02 09:58:53 來源:億速云 閱讀:180 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Python中g(shù)etpass模塊無回顯輸入的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

getpass模塊

getpass.getpass(prompt='Password: ‘, stream=None)

調(diào)用該函數(shù)可以在命令行窗口里面無回顯輸入密碼。參數(shù)prompt代表提示字符串,默認(rèn)是'Password: ‘。在Unix系統(tǒng)中,stream默認(rèn)為當(dāng)前控制的終端。在Windows系統(tǒng)里stream參數(shù)會(huì)被忽略掉,默認(rèn)使用stdin。如果無法正常使用getpass,會(huì)打印錯(cuò)誤信息,然后模塊會(huì)使用有回顯的模式讀取數(shù)據(jù)。

>>> import getpass
>>> passwd = getpass.getpass()
Password:
>>> print(passwd)
ganziqim

getpass.getuser()

返回當(dāng)前用戶名。這個(gè)函數(shù)會(huì)按順序檢查環(huán)境變量LOGNAME, USER, LNAME和USERNAME。返回第一個(gè)非空的值。如果檢查不到非空的值,模塊會(huì)嘗試導(dǎo)入pwd模塊,如果系統(tǒng)支持pwd模塊,會(huì)返回通過pwd模塊獲取的用戶名,否則報(bào)錯(cuò)。

>>> getpass.getuser()
'ganzi'

一些細(xì)節(jié)

1.getpass模塊內(nèi)部其實(shí)實(shí)現(xiàn)了unix_getpass、win_getpass和fallback_getpass三個(gè)函數(shù)。在模塊被導(dǎo)入之后會(huì)首先對(duì)用戶使用的系統(tǒng)進(jìn)行檢查,將相應(yīng)的函數(shù)賦值給getpass。如果檢查失敗,則將fallback_getpass賦值給getpass。

2.win_getpass使用msvcrt.getwch()獲取無回顯輸入。

3.fallback_getpass不僅在一開始檢查系統(tǒng)的時(shí)候被調(diào)用,當(dāng)另外兩個(gè)函數(shù)出現(xiàn)錯(cuò)誤的時(shí)候也會(huì)調(diào)用它。而調(diào)用了fallback_getpass又會(huì)先打印錯(cuò)誤信息,然后再調(diào)用模塊內(nèi)部的_raw_input函數(shù)進(jìn)行有回顯的輸入讀取。

這個(gè)是寫在模塊底部的系統(tǒng)檢查代碼:

try:
  import termios
  termios.tcgetattr, termios.tcsetattr
except (ImportError, AttributeError):
  try:
    import msvcrt
  except ImportError:
    getpass = fallback_getpass
  else:
    getpass = win_getpass
else:
  getpass = unix_getpass

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python中g(shù)etpass模塊無回顯輸入的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI