8.8.1 使用例

以下は、入力をエコーしないパスワードの入力を求める関数です。 tcgetattr() コールと、try ... finally 文を分割 しておいて、どのような場合にも古い端末属性を確実にリストアしていることに 注意してください。

def getpass(prompt = "Password: "):
    import termios, 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


guido@python.org