zoukankan      html  css  js  c++  java
  • [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()有关系,如果有人知道为啥请回复一下,3Q~

  • 相关阅读:
    浅议tomcat与classloader
    业务系统的JVM启动参数推荐
    Nginx负载趟过的坑
    linux 建立反向shell
    rpm -e 包名 卸载安装的二进制包
    源码安装natcat
    取消密码登录
    ssh-copy-id 安全地复制公钥到远程服务器上
    iptables允许一个ip访问本机的某个端口
    zookeeper 安装 配置集群
  • 原文地址:https://www.cnblogs.com/lovebread/p/1872774.html
Copyright © 2011-2022 走看看