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实现猜数字游戏(无重复数字)示例分享
Mar 29 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
用Eclipse写python程序
Feb 10 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 Python
Python实现二维数组输出为图片
Apr 03 Python
查看django执行的sql语句及消耗时间的两种方法
May 29 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
基于python操作ES实例详解
Nov 16 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
一些关于python 装饰器的个人理解
Aug 31 Python
在PyCharm中安装PaddlePaddle的方法
Feb 05 Python
python使用torch随机初始化参数
Mar 22 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
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
Node.js数据库操作之连接MySQL数据库(一)
2017/03/04 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
Python实现的购物车功能示例
2018/02/11 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
python绘制分布折线图的示例
2020/09/24 Python
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
什么是makefile? 如何编写makefile?
2013/01/02 面试题
什么是测试驱动开发(TDD)
2012/02/15 面试题
大学班级计划书
2014/04/29 职场文书
体育教师个人工作总结
2015/02/09 职场文书
2015年招生工作总结
2015/05/04 职场文书
辩护意见书
2015/06/04 职场文书
Python基于百度API识别并提取图片中文字
2021/06/27 Python
python 使用pandas读取csv文件的方法
2022/12/24 Python