2025年4月9日 星期三 乙巳(蛇)年 正月初十 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

Python:控制台输入密码passwod的方法

时间:05-22来源:作者:点击数:38

Python:控制台输入密码passwod的方法

input

  • print(input("please input: "))
  • $ python3 demo.py
  • please input: 123456
  • 123456

缺点:不安全

getpass

  • import getpass
  • print(getpass.getpass("please input: "))
  • $ python3 demo.py
  • please input:
  • 123456

缺点:看不到输入的位数

termios

  • import sys, tty, termios
  • def getch():
  • fd = sys.stdin.fileno()
  • old_settings = termios.tcgetattr(fd)
  • try:
  • tty.setraw(sys.stdin.fileno())
  • ch = sys.stdin.read(1)
  • finally:
  • termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
  • return ch
  • def getpass(maskchar = "*"):
  • password = ""
  • while True:
  • ch = getch()
  • if ch == "\r" or ch == "\n":
  • print
  • return password
  • elif ch == "\b" or ord(ch) == 127:
  • if len(password) > 0:
  • sys.stdout.write("\b \b")
  • password = password[:-1]
  • else:
  • if maskchar != None:
  • sys.stdout.write(maskchar)
  • password += ch
  • if __name__ == "__main__":
  • print ("Enter your password:",)
  • password = getpass("*")
  • print ("your password is %s" %password)
  • $ python3 demo.py
  • Enter your password:
  • ******
  • your password is 123456

缺点:该方法仅在Linux上使用

msvcrt

  • import msvcrt,sys
  • def pwd_input():
  • chars = []
  • while True:
  • try:
  • newChar = msvcrt.getch().decode(encoding="utf-8")
  • except:
  • return input("你很可能不是在cmd命令行下运行,密码输入将不能隐藏:")
  • if newChar in '\r\n': # 如果是换行,则输入结束
  • break
  • elif newChar == '\b': # 如果是退格,则删除密码末尾一位并且删除一个星号
  • if chars:
  • del chars[-1]
  • msvcrt.putch('\b'.encode(encoding='utf-8')) # 光标回退一格
  • msvcrt.putch( ' '.encode(encoding='utf-8')) # 输出一个空格覆盖原来的星号
  • msvcrt.putch('\b'.encode(encoding='utf-8')) # 光标回退一格准备接受新的输入
  • else:
  • chars.append(newChar)
  • msvcrt.putch('*'.encode(encoding='utf-8')) # 显示为星号
  • return (''.join(chars) )
  • if __name__ == "__main__":
  • print("Please input your password:")
  • pwd = pwd_input()
  • print("\nyour password is:{0}".format(pwd))
  • sys.exit()

缺点:仅在Windows上使用

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门