这篇文章主要介绍了Python中getpass模块无回显输入的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
getpass模块
getpass.getpass(prompt='Password: ‘, stream=None)
调用该函数可以在命令行窗口里面无回显输入密码。参数prompt代表提示字符串,默认是'Password: ‘。在Unix系统中,stream默认为当前控制的终端。在Windows系统里stream参数会被忽略掉,默认使用stdin。如果无法正常使用getpass,会打印错误信息,然后模块会使用有回显的模式读取数据。
>>> import getpass >>> passwd = getpass.getpass() Password: >>> print(passwd) ganziqim
getpass.getuser()
返回当前用户名。这个函数会按顺序检查环境变量LOGNAME, USER, LNAME和USERNAME。返回第一个非空的值。如果检查不到非空的值,模块会尝试导入pwd模块,如果系统支持pwd模块,会返回通过pwd模块获取的用户名,否则报错。
>>> getpass.getuser() 'ganzi'
一些细节
1.getpass模块内部其实实现了unix_getpass、win_getpass和fallback_getpass三个函数。在模块被导入之后会首先对用户使用的系统进行检查,将相应的函数赋值给getpass。如果检查失败,则将fallback_getpass赋值给getpass。
2.win_getpass使用msvcrt.getwch()获取无回显输入。
3.fallback_getpass不仅在一开始检查系统的时候被调用,当另外两个函数出现错误的时候也会调用它。而调用了fallback_getpass又会先打印错误信息,然后再调用模块内部的_raw_input函数进行有回显的输入读取。
这个是写在模块底部的系统检查代码:
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
感谢你能够认真阅读完这篇文章,希望小编分享的“Python中getpass模块无回显输入的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。