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之Python安装
Sep 12 Python
Python中集合类型(set)学习小结
Jan 28 Python
python简单程序读取串口信息的方法
Mar 13 Python
Python socket套接字实现C/S模式远程命令执行功能案例
Jul 06 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
Feb 19 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
Python使用configparser库读取配置文件
Feb 22 Python
Python实现代码块儿折叠
Apr 15 Python
在keras 中获取张量 tensor 的维度大小实例
Jun 10 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
Zend的AutoLoad机制介绍
2012/09/27 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
python实现的文件夹清理程序分享
2014/11/22 Python
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
python遍历目录的方法小结
2016/04/28 Python
python unittest实现api自动化测试
2018/04/04 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
python实现内存监控系统
2021/03/07 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
Farah官方网站:男士服装及配件
2019/11/01 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
几道PHP面试题
2013/04/14 面试题
医药专业推荐信
2013/11/15 职场文书
质检的岗位职责
2013/11/17 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
行政文员岗位职责
2015/02/04 职场文书
2016中秋节问候语
2015/11/11 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python
python实现手机推送 代码也就10行左右
2022/04/12 Python