1

我正在编写一个 Python 应用程序,并想提示用户输入密码。如果他们没有在 60 秒内进入,程序应该退出。如果他们确实输入了密码,他们的密码应该隐藏在终端中。

我该怎么做呢?

语境

我看过类似这样的帖子,其中建议使用超时输入一些用户输入的方法。但是,这些解决方案不会像隐藏输入那样隐藏输入getpass。我想知道是否有一些功能可以使用getpass或类似的东西。

4

1 回答 1

1

受此启发(似乎仅适用于 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
于 2022-01-28T15:22:50.437 回答