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的面向对象编程方式学习笔记
Jul 12 Python
Python探索之URL Dispatcher实例详解
Oct 28 Python
django从请求到响应的过程深入讲解
Aug 01 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
Python如何在DataFrame增加数值
Feb 14 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
Dec 17 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
详解python日志输出使用配置文件格式
Feb 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
php笔记之:AOP的应用
2013/04/24 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
PHP attributes()函数讲解
2019/02/03 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
js对象基础实例分析
2015/01/13 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
python实现得到一个给定类的虚函数
2014/09/28 Python
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
python源文件的字符编码知识点详解
2021/03/04 Python
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
幼儿园亲子活动方案
2014/01/29 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
小学班主任寄语大全
2014/04/04 职场文书
对孩子的寄语
2014/04/09 职场文书
实习单位指导教师评语
2014/12/30 职场文书
锅炉工岗位职责
2015/02/13 职场文书
代理词怎么写
2015/05/25 职场文书
歼十出击观后感
2015/06/11 职场文书
jquery插件实现悬浮的菜单
2021/04/24 jQuery
MySQL 5.7常见数据类型
2021/07/15 MySQL