14.4.2 无终端使用getpass
在UNIX下,getpass()往往需要一个tty,他能通过termios控制这个tty,从而禁用输入回显。采用这种方法,不会从一个重定向到标准输入的非终端流读取值。getpass会尝试访问tty来完成处理,如果函数可以访问tty,那么便不会产生错误。
要由调用者负责检测输入流并非tty的情况,并在这种情况下使用一个候选方法来读取。
import getpass
import sys
if sys.stdin.isatty():
p = getpass.getpass('Using getpass: ')
else:
print('Using readline')
p = sys.stdin.readline().rstrip()
print('Read: ',p)
如果是tty,输出为:
如果不是tty,输出为: