【问题标题】:Python get user input password with timeoutPython获取用户输入密码超时
【发布时间】:2022-01-27 15:53:39
【问题描述】:

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

我该怎么做?

上下文

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

【问题讨论】:

  • 需要this 之类的帮助吗?
  • 这是一个有趣的解决方案,但它似乎太低级了。将线程用于我认为常见的用例似乎很脆弱。

标签: python terminal passwords timeout getpass


【解决方案1】:

this 的启发(似乎只适用于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

【讨论】:

  • 作为 Unix 系统的要求是让我在那篇文章中拒绝使用该解决方案的原因。不过,这可能是我见过的最好的选择。
  • 是的,它有点限制。但似乎这样或线程是最好的方法。 @whoopscheckmate
猜你喜欢
  • 2012-06-27
  • 2021-02-26
  • 1970-01-01
  • 2020-01-27
  • 2020-10-02
  • 1970-01-01
  • 2012-03-01
相关资源
最近更新 更多