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中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python RuntimeError: thread.__init__() not called解决方法
Apr 28 Python
python 垃圾收集机制的实例详解
Aug 20 Python
Python使用三种方法实现PCA算法
Dec 12 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
python实现简单的单变量线性回归方法
Nov 08 Python
启动Atom并运行python文件的步骤
Nov 09 Python
opencv设置采集视频分辨率方式
Dec 10 Python
Python数组并集交集补集代码实例
Feb 18 Python
教你使用pyinstaller打包Python教程
May 27 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文件上传、下载和删除示例
2020/08/28 PHP
用js重建星际争霸
2006/12/22 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
js实现的二分查找算法实例
2016/01/21 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
JavaScript"模拟事件"的注意要点详解
2019/02/13 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
监理资料员岗位职责
2014/01/03 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏