以下はエコーバックを切った状態でパスワード入力を促す関数です。 ユーザの入力に関わらず以前の端末属性を正確に回復するために、 二つの tcgetattr() と try ... finally 文によるテクニックが使われています:
def getpass(prompt = "Password: "):
import termios, sys
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ECHO # lflags
try:
termios.tcsetattr(fd, termios.TCSADRAIN, new)
passwd = raw_input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。