Python getpass 输入密码

Python有个自带的getpass模块:

  1. import getpass  
  2. password = getpass.getpass('Enter password: ')  
  3. print password  

该模块继承了UNIX下的一贯风格,输入密码不回显屏蔽符。

 

如果需要显示屏蔽符以提示自己确实正在输入密码的话,可以使用下面的模块:

  1. import sys, tty, termios  
  2. def getch():  
  3.   fd = sys.stdin.fileno()  
  4.   old_settings = termios.tcgetattr(fd)  
  5.   try:  
  6.     tty.setraw(sys.stdin.fileno())  
  7.     ch = sys.stdin.read(1)  
  8.   finally:  
  9.     termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)  
  10.   return ch  
  11. def getpass(maskchar = "*"):  
  12.   password = ""  
  13.   while True:  
  14.     ch = getch()  
  15.     if ch == "/r" or ch == "/n":  
  16.       print  
  17.       return password  
  18.     elif ch == "/b" or ord(ch) == 127:  
  19.       if len(password) > 0:  
  20.         sys.stdout.write("/b /b")  
  21.         password = password[:-1]  
  22.     else:  
  23.       if maskchar != None:  
  24.         sys.stdout.write(maskchar)  
  25.       password += ch  
  26. if __name__ == "__main__":  
  27.   print "Enter password:",  
  28.   password = getpass("*")  
  29.   print password  

当getpass的参数为None时不回显屏蔽符号,否则显示指定的屏蔽符号。

猜你喜欢

转载自scm002.iteye.com/blog/2286938