Python Getpass 模块

2024 年 8 月 29 日 | 5 分钟阅读

在 Python 中,有各种程序需要在交易中 secret keys、pass-phrases 或密码,或者识别有权执行某些活动的用户。在接受密钥时,需要注意许多事项,例如应在屏幕上隐藏密码,禁用回显语句等等。Python 编程语言中的 **getpass** 模块提供了所有这些功能。

在以下教程中,我们将通过不同的示例和对其用法的理解,详细讨论 Python **getpass** 模块。

理解 Python getpass 模块

与 **NumPy** 和 **Matplotlib** 模块类似,**getpass** 也是 Python 编程语言的一个模块。**getpass** 模块会在不回显的情况下(即不显示用户键入的内容)要求用户输入密码。

每当我们在基于终端的应用程序中使用不同的安全凭据(在应用程序执行之前需要密码)时,都将使用 Python **getpass** 模块来实现。

Python 标准库中的 **getpass** 模块广泛定义了两个函数。当必须仅在验证用户凭据后执行基于终端的应用程序时,这些函数是支持的。

这些函数如下

  1. getpass() 函数
  2. getuser() 函数

理解 getpass() 函数

在各种程序中,我们有安全数据或程序,在这种情况下,我们会使用一些 secret 或 key 或密码来识别用户。使用 **getpass()** 函数,我们可以在 Python 程序中接受密码。

让我们通过以下示例来理解这一点

示例

输出

Input the Password:
# The inserted value is Admin
The key is Unlocked!

说明

在上面的代码片段中,我们导入了 **getpass** 模块,并创建了一个变量,该变量使用 **getpass** 模块的 **getpass()** 函数来存储密钥的值。然后,我们使用了 **if-else** 条件语句来检查输入值是否与变量中的值匹配,如果匹配,则为用户解锁。

现在,让我们通过示例来理解 **getpass()** 函数的不同用法。

不带提示的 getpass() 函数

在以下示例中,我们将了解如何从用户那里获取密码,并在没有提示的情况下返回相同的密码。

示例

输出

Password:
# The inserted value is Admin
Entered password: Admin

说明

在上面的代码片段中,我们导入了 **getpass** 模块,并定义了一个使用 **getpass()** 的参数。在这里,我们没有指定任何参数。然后,我们为用户打印了一个语句。

带提示的 getpass() 函数

如果用户在登录前需要一些消息,例如安全问题,我们将使用 **getpass()** 函数中的 **prompt** 属性。

让我们考虑以下示例来理解这一点。

示例

输出

What is your birthplace?:
# The inserted value is Ohio
Unlock! Welcome back Dani.

说明

在上面的代码片段中,我们导入了 **getpass** 模块。然后,我们定义了一个变量,该变量使用带有 **prompt** 参数的 **getpass()** 函数来包含一些消息。然后,我们使用了 **if-else** 条件语句来检查输入密码的值是否与程序中存储的值匹配,并打印相应的语句。

带其他流的 getpass() 函数

此函数允许程序员流式传输用户输入的密码。让我们通过下面的示例来理解这一点

示例

输出

Password:
# The inserted value is Admin
Entered Password: Admin

说明

在上面的代码片段中,我们导入了 **getpass** 模块以及 **sys** 模块。然后,我们定义了一个变量,该变量使用 **getpass()** 函数,该函数将 **sys.stderr** 流作为函数的参数。然后,我们打印了一个语句,要求用户输入密码。

理解 getuser() 函数

getuser() 函数返回用户的系统登录名。此函数会检查计算机的环境变量。它会获取用户名并返回一个字符串,如果找不到环境变量,则会引发异常。

让我们通过一个基于 **getuser()** 函数的示例来检索计算机的用户名。

示例

输出

Username: Mango

说明

在上面的代码片段中,我们导入了 **getpass** 模块,并使用了 **getuser()** 函数来检索存储在系统中的用户名。

现在,让我们通过一个使用 **getuser()** 和 **getpass()** 函数来获取用户名和密码的示例。

示例

输出

Enter Password:
# The inserted value is Admin
Username: Mango
Password: Admin

说明

在上面的代码片段中,我们导入了 **getpass** 模块,并定义了使用 **getuser()** 和 **getpass()** 函数来获取用户名和密码的变量。然后,我们为用户打印了这些值。