欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中g(shù)etpass模塊無回顯輸入源碼解析

 更新時間:2018年01月11日 14:20:56   作者:GanZiQim  
這篇文章主要介紹了Python中g(shù)etpass模塊無回顯輸入源碼解析,具有一定借鑒價值,需要的朋友可以參考下

本文主要討論了python中g(shù)etpass模塊的相關(guān)內(nèi)容,具體如下。

getpass模塊

昨天跟學(xué)弟吹牛b安利Python標(biāo)準(zhǔn)庫官方文檔的時候偶然發(fā)現(xiàn)了這個模塊。仔細(xì)一看內(nèi)容挺少的,只有兩個主要api,就花了點時間閱讀了一下源碼,感覺挺實用的,在這安利給大家。

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ù)會被忽略掉,默認(rèn)使用stdin。如果無法正常使用getpass,會打印錯誤信息,然后模塊會使用有回顯的模式讀取數(shù)據(jù)。

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

getpass.getuser()

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

>>> getpass.getuser()
'ganzi'

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

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

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

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

這個是寫在模塊底部的系統(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

總結(jié):getpass模塊只有不到200行代碼(包括注釋和模塊文檔),getuser的主要代碼更是只有短短7行,內(nèi)部實現(xiàn)非常簡單。但模塊內(nèi)部有很多處理異常情況的代碼,很多細(xì)節(jié)沒辦法在博客里面展開細(xì)說,說了顯得啰嗦,不像是筆記。所以建議有興趣的讀者花點時間閱讀一下源碼,能對模塊的細(xì)節(jié)有更充分的理解。

以上就是本文關(guān)于Python中g(shù)etpass模塊無回顯輸入源碼解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • python3 QT5 端口轉(zhuǎn)發(fā)工具兩種場景分析

    python3 QT5 端口轉(zhuǎn)發(fā)工具兩種場景分析

    這篇文章主要介紹了python3 QT5 端口轉(zhuǎn)發(fā)工具,功能是打開本機(jī)端口,映射到指定IP的端口,接下來通過兩種場景給大家詳細(xì)介紹,感興趣的朋友一起看看吧
    2022-01-01
  • python?協(xié)程并發(fā)數(shù)控制

    python?協(xié)程并發(fā)數(shù)控制

    這篇文章主要介紹了python?協(xié)程并發(fā)數(shù)控制,文章基于python的相關(guān)資料展開對主題煩人詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-05-05
  • Python實現(xiàn)投影法分割圖像示例(一)

    Python實現(xiàn)投影法分割圖像示例(一)

    今天小編就為大家分享一篇Python實現(xiàn)投影法分割圖像示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python基于回溯法子集樹模板實現(xiàn)8皇后問題

    Python基于回溯法子集樹模板實現(xiàn)8皇后問題

    這篇文章主要介紹了Python基于回溯法子集樹模板實現(xiàn)8皇后問題,簡單說明了8皇后問題的原理并結(jié)合實例形式分析了Python回溯法子集樹模板解決8皇后問題的具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • 用vue.js組件模擬v-model指令實例方法

    用vue.js組件模擬v-model指令實例方法

    在本篇文章里小編給各位整理的是關(guān)于用vue.js組件模擬v-model指令實例方法和相關(guān)代碼,需要的朋友們可以跟著學(xué)習(xí)下。
    2019-07-07
  • Python中模塊string.py詳解

    Python中模塊string.py詳解

    這篇文章主要介紹了Python中模塊之string.py的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Python通過Socket手動實現(xiàn)HTTP協(xié)議

    Python通過Socket手動實現(xiàn)HTTP協(xié)議

    這篇文章主要為大家詳細(xì)介紹了Python如何通過Socket手動實現(xiàn)HTTP協(xié)議,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一
    2024-03-03
  • python3 讀寫文件換行符的方法

    python3 讀寫文件換行符的方法

    下面小編就為大家分享一篇python3 讀寫文件換行符的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 解決python3.6 右鍵沒有 Edit with IDLE的問題

    解決python3.6 右鍵沒有 Edit with IDLE的問題

    這篇文章主要介紹了解決python3.6 右鍵沒有 Edit with IDLE的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python+numpy實現(xiàn)矩陣的行列擴(kuò)展方式

    Python+numpy實現(xiàn)矩陣的行列擴(kuò)展方式

    今天小編就為大家分享一篇Python+numpy實現(xiàn)矩陣的行列擴(kuò)展方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評論