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中IPYTHON入门实例
May 11 Python
Python内置模块turtle绘图详解
Dec 09 Python
scrapy爬虫实例分享
Dec 28 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
Django Rest framework认证组件详细用法
Jul 25 Python
python定间隔取点(np.linspace)的实现
Nov 27 Python
python单向循环链表原理与实现方法示例
Dec 03 Python
python使用openpyxl操作excel的方法步骤
May 28 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
Jul 14 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
Sep 30 Python
Python爬取网站图片并保存的实现示例
Feb 26 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
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
php将会员数据导入到ucenter的代码
2010/07/18 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
php操作MongoDB类实例
2015/06/17 PHP
Thinkphp单字母函数使用指南
2016/05/08 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
深究AngularJS之ui-router详解
2017/06/13 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
Python中bisect的用法
2014/09/23 Python
Django入门使用示例
2017/12/12 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
在django中,关于session的通用设置方法
2019/08/06 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
党员学习十八大感想
2014/01/17 职场文书
部门年终奖分配方案
2014/05/07 职场文书
小学数学课题方案
2014/06/15 职场文书
四风查摆剖析材料
2014/10/10 职场文书
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers
python实现简单的三子棋游戏
2022/04/28 Python