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 连接sqlite及简单操作
Jun 30 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
一些Centos Python 生产环境的部署命令(推荐)
May 07 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
python实发邮件实例详解
Nov 11 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
python 5个顶级异步框架推荐
Sep 09 Python
用Python进行websocket接口测试
Oct 16 Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 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 登录记住密码实现思路
2013/05/07 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
JS原型对象通俗"唱法"
2012/12/27 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
2020/12/03 Vue.js
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
django自带的server 让外网主机访问方法
2018/05/14 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
大学学雷锋活动总结
2014/06/26 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript