我正在编写一个 Python 应用程序,并想提示用户输入密码。如果他们没有在 60 秒内进入,程序应该退出。如果他们确实输入了密码,他们的密码应该隐藏在终端中。
我该怎么做呢?
语境
我看过类似这样的帖子,其中建议使用超时输入一些用户输入的方法。但是,这些解决方案不会像隐藏输入那样隐藏输入getpass
。我想知道是否有一些功能可以使用getpass
或类似的东西。
受此启发(似乎仅适用于 Unix 系统),您可以通过signal.alarm()
import getpass
import signal
def timeout(signum, frame):
print('Timeout!')
exit()
def get_user_password():
upass = getpass.getpass()
return upass
if __name__ == "__main__":
signal.signal(signal.SIGALRM, timeout)
timeout_in_s = 10
signal.alarm(timeout_in_s)
upass = get_user_password()
signal.alarm(0) # Stop alarm