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操作列表的常用方法分享
Feb 13 Python
Python连接mssql数据库编码问题解决方法
Jan 01 Python
详解Python当中的字符串和编码
Apr 25 Python
Python的__builtin__模块中的一些要点知识
May 02 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
python利用不到一百行代码实现一个小siri
Mar 02 Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 Python
Python中new方法的详解
Jan 15 Python
Python守护进程实现过程详解
Feb 10 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
使用pandas模块实现数据的标准化操作
May 14 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
PHP新手上路(十三)
2006/10/09 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
菜鸟javascript基础资料整理2
2010/12/06 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
javascript运动详解
2015/07/06 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python采用getopt解析命令行输入参数实例
2014/09/30 Python
详解在Python程序中使用Cookie的教程
2015/04/30 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
python实现单链表的方法示例
2019/09/03 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
浅析python中的del用法
2020/09/02 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
国防教育标语
2014/10/08 职场文书
婚宴父亲致辞
2015/07/27 职场文书
网吧管理制度范本
2015/08/05 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
2019消防宣传标语!
2019/07/10 职场文书
你知道Java Spring的两种事务吗
2022/03/16 Java/Android