13.4 è¿�行时弹出密ç �输入æ��示¶
问题¶
ä½ å†™äº†ä¸ªè„šæœ¬ï¼Œè¿�行时需è¦�一个密ç �。æ¤è„šæœ¬æ˜¯äº¤äº’å¼�çš„ï¼Œå› æ¤ä¸�能将密ç �在脚本ä¸ç¡¬ç¼–ç �, 而是需è¦�弹出一个密ç �输入æ��示,让用户自己输入。
解决方案¶
这时候Pythonçš„ getpass 模å�—æ£æ˜¯ä½ 所需è¦�çš„ã€‚ä½ å�¯ä»¥è®©ä½ 很轻æ�¾çš„弹出密ç �输入æ��示,
并且ä¸�会在用户终端回显密ç �。下é�¢æ˜¯å…·ä½“代ç �:
import getpass
user = getpass.getuser()
passwd = getpass.getpass()
if svc_login(user, passwd): # You must write svc_login()
print('Yay!')
else:
print('Boo!')
在æ¤ä»£ç �ä¸ï¼Œsvc_login() æ˜¯ä½ è¦�实现的处ç�†å¯†ç �的函数,具体的处ç�†è¿‡ç¨‹ä½ 自己决定。
讨论¶
注æ„�在å‰�é�¢ä»£ç �ä¸ getpass.getuser() ä¸�会弹出用户å��的输入æ��示。
å®ƒä¼šæ ¹æ�®è¯¥ç”¨æˆ·çš„shell环境或者会ä¾�æ�®æœ¬åœ°ç³»ç»Ÿçš„密ç �库(支æŒ� pwd 模å�—的平å�°ï¼‰æ�¥ä½¿ç”¨å½“å‰�用户的登录å��,
å¦‚æžœä½ æƒ³æ˜¾ç¤ºçš„å¼¹å‡ºç”¨æˆ·å��输入æ��示,使用内置的 input 函数:
user = input('Enter your username: ')
还有一点很é‡�è¦�,有些系统å�¯èƒ½ä¸�支æŒ� getpass() 方法éš�è—�输入密ç �。
è¿™ç§�情况下,Python会æ��å‰�è¦å‘Šä½ 这些问题(例如它会è¦å‘Šä½ 说密ç �会以明文形å¼�显示)