最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

getpass模塊

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

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ì)首先對用戶使用的系統(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

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

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

相關(guān)文章

  • Python中最好用的命令行參數(shù)解析工具(argparse)

    Python中最好用的命令行參數(shù)解析工具(argparse)

    這篇文章主要介紹了Python中最好用的命令行參數(shù)解析工具(argparse),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • pandas解決空列表問題

    pandas解決空列表問題

    本文主要介紹了Python的pandas庫中高效處理空列表的問題,包括識(shí)別、過濾、替換和聚合操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Python plt.imshow函數(shù)及其參數(shù)使用

    Python plt.imshow函數(shù)及其參數(shù)使用

    plt.imshow()是Matplotlib庫中的一個(gè)函數(shù),主要用于顯示圖像或矩陣數(shù)據(jù),本文主要介紹了Python plt.imshow函數(shù)及其參數(shù)使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • 如何利用Pyecharts可視化微信好友

    如何利用Pyecharts可視化微信好友

    這篇文章主要給大家介紹了關(guān)于如何利用Pyecharts可視化微信好友的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Pyecharts具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python關(guān)于倒排列的知識(shí)點(diǎn)總結(jié)

    python關(guān)于倒排列的知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家分享的是一篇關(guān)于python關(guān)于倒排列的知識(shí)點(diǎn)總結(jié),有需要的朋友們可以參考下。
    2020-10-10
  • Python import用法以及與from...import的區(qū)別

    Python import用法以及與from...import的區(qū)別

    這篇文章主要介紹了Python import用法以及與from...import的區(qū)別,本文簡潔明了,很容易看懂,需要的朋友可以參考下
    2015-05-05
  • python 解決pycharm運(yùn)行py文件只有unittest選項(xiàng)的問題

    python 解決pycharm運(yùn)行py文件只有unittest選項(xiàng)的問題

    這篇文章主要介紹了python 解決pycharm運(yùn)行py文件只有unittest選項(xiàng)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Django CBV類的用法詳解

    Django CBV類的用法詳解

    這篇文章主要介紹了Django CBV類的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python中pygame的mouse鼠標(biāo)事件用法實(shí)例

    Python中pygame的mouse鼠標(biāo)事件用法實(shí)例

    這篇文章主要介紹了Python中pygame的mouse鼠標(biāo)事件用法,以完整實(shí)例形式詳細(xì)分析了pygame響應(yīng)鼠標(biāo)事件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Pycharm報(bào)錯(cuò):'NoneType'?object?has?no?attribute?'bytes'的解決方法

    Pycharm報(bào)錯(cuò):'NoneType'?object?has?no?attribute?

    這篇文章主要給大家介紹了關(guān)于Pycharm報(bào)錯(cuò):'NoneType'?object?has?no?attribute?'bytes'的解決方法,文中通過圖文將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02

最新評論

塘沽区| 米林县| 西林县| 铜梁县| 咸丰县| 迁西县| 安陆市| 镇原县| 阜宁县| 苍山县| 德昌县| 彭阳县| 招远市| 元氏县| 湘乡市| 边坝县| 长子县| 西吉县| 留坝县| 南木林县| 扶风县| 洛隆县| 老河口市| 侯马市| 闽清县| 晴隆县| 太仆寺旗| 乾安县| 吉林市| 兴安县| 松溪县| 宜黄县| 景德镇市| 通道| 宣威市| 彭水| 茂名市| 汽车| 澄江县| 洛扎县| 台中市|