Python实现控制台输入密码的方法


Posted in Python onMay 29, 2015

本文实例讲述了Python实现控制台输入密码的方法。分享给大家供大家参考。具体如下:

1. raw_input() :

pwd = raw_input('password: ')
print pwd
# password: aaa
# aaa

Note: 最简单的方法,但是不安全

2. getpass.getpass() :

import getpass
pwd = getpass.getpass('password: ')
print pwd
# password:
# aaaa

Note: 很安全,但是看不到输入的位数,会让人觉得有点不习惯,不知道的还以为没有在输入..

3. msvcrt.getch() :

代码如下:

import msvcrt, sys
def pwd_input():
  chars = []
  while True:
    newChar = msvcrt.getch()
    if newChar in '\r\n':
    # 如果是换行,则输入结束
      print ''
      break
    elif newChar == '\b':
    # 如果是退格,则删除末尾一位
      if chars:
        del chars[-1]
        sys.stdout.write('\b')
        # 删除一个星号,但是不知道为什么不能执行...
    else:
      chars.append(newChar)
      sys.stdout.write('*')
      # 显示为星号
  print ''.join(chars)
pwd = pwd_input()
print pwd
# ******
# aaaaaa

Note: 解决了第二种方法不能显示输入位数的问题,但是如果按退格键(backspace)的话,虽然实际的是退格了,

但控制台却没有显示相应的退格,比如,当前输入是:abcd,显示为:****,然后现在打一个退格键,实际

输入为:abc,而显示仍为:****。不知道为什么 sys.stdout.write('\b') 这行没有执行,估计是和使用msvcrt.getch()有关系。感兴趣的朋友可以进一步研究一下。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
深入浅析python定时杀进程
Jun 06 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
Python 正则表达式入门(中级篇)
Dec 07 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
python图书管理系统
Apr 05 Python
Django中间件实现拦截器的方法
Jun 01 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
Python 串口读写的实现方法
Jun 12 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
Python遍历字典方式就实例详解
Dec 28 Python
python3.4中清屏的处理方法
Jul 06 Python
python删除过期文件的方法
May 29 #Python
Python的Django框架中TEMPLATES项的设置教程
May 29 #Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
May 29 #Python
Python fileinput模块使用实例
May 28 #Python
Python sys.argv用法实例
May 28 #Python
Python中exit、return、sys.exit()等使用实例和区别
May 28 #Python
Python中的with...as用法介绍
May 28 #Python
You might like
很实用的一个完整email发送程序
2006/10/09 PHP
PHP中读写文件实现代码
2011/10/20 PHP
实现获取http内容的php函数分享
2014/02/16 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
js获取视频时长代码
2014/04/10 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
webpack打包优化的几个方法总结
2020/02/10 Javascript
基于JavaScript实现大文件上传后端代码实例
2020/08/18 Javascript
Python基础练习之用户登录实现代码分享
2017/11/08 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Python 实现向word(docx)中输出
2020/02/13 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
学生会辞职信
2015/03/02 职场文书
2015年超市工作总结
2015/04/09 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL