在Python中使用的Getpass模块
有许多Python程序需要使用秘密密钥、密码短语或密码来进行机密交易或验证授权用户执行某些活动。在接受密钥期间需要注意的各种操作是不应该将短语回显到屏幕上,禁用语句的回显以及许多其他操作。Python编程语言中的 getpass 模块提供了所有这些功能。
在以下教程中,我们将详细讨论Python getpass 模块,并借助不同的示例来了解其用途。
理解Python getpass模块
与NumPy和Matplotlib模块类似, getpass 也是Python编程语言的一个模块。getpass模块请求用户输入密码,但不回显,也就是说不显示用户输入的内容。
每当我们使用基于终端的应用程序执行之前需要在终端输入密码的安全凭据时,就可以使用Python的 getpass 模块来实现。
Python标准库的getpass模块中定义了两个广泛使用的功能。当终端应用程序只能在验证用户凭据之后才能执行时,这些功能是支持的。
这些功能如下:
- getpass() 函数
- getuser() 函数
理解getpass()函数
在各种程序中,当我们有安全数据或程序时,我们会使用一些秘密、密钥或密码来识别用户。使用 getpass() 函数,我们可以在Python程序中接受密码。
让我们通过以下示例来理解:
示例:
# importing the getpass module
import getpass
# using the getpass() function
my_pass = getpass.getpass(prompt = 'Input the Password:')
# using the if-else conditional statments
if my_pass == 'Admin':
print('The key is Unlocked!')
else:
print('You\'ve entered an invalid password!')
输出:
Input the Password:
# The inserted value is Admin
The key is Unlocked!
解释:
在上面的代码片段中,我们导入了 getpass 模块,并创建了一个变量,该变量使用 getpass() 函数来存储密钥的值。然后,我们使用 if-else 条件语句来检查输入值是否与变量中的值匹配,并如果匹配,则为用户解锁。
现在,让我们通过示例来了解 getpass() 函数的不同用法。
不带提示的getpass()函数
在以下示例中,我们将了解如何从用户获取密码并返回相同的密码而无需提示。
示例:
# importing the getpass module
import getpass
# using the getpass() function without prompt
my_pass = getpass.getpass()
# printing the statement
print("Entered password:", my_pass)
输出:
Password:
# The inserted value is Admin
Entered password: Admin
说明:
在上面的代码片段中,我们导入了 getpass 模块并定义了一个使用 getpass() 的参数。这里,我们没有指定任何参数。然后,我们打印了一个针对用户的声明。
使用提示的getpass()函数
如果用户在登录之前需要一些消息,比如安全问题,我们将在 getpass() 函数中使用 prompt 属性。
让我们通过以下示例来理解这个函数。
示例:
# importing the getpass module
import getpass
# using the getpass() function with prompt
my_pass = getpass.getpass(prompt = "What is your birthplace?:")
# using the if-else conditional statement
if my_pass == 'Ohio':
print("Unlock! Welcome back Dani.")
else:
print("Your password is invalid!")
输出:
What is your birthplace?:
# The inserted value is Ohio
Unlock! Welcome back Dani.
解释:
在上面的代码片段中,我们导入了 getpass 模块。然后我们定义了一个变量,该变量使用 getpass() 函数和 prompt 参数来包含一些消息。然后我们使用 if-else 条件语句来检查输入的密码值是否与程序中存储的值匹配,并打印相应的语句。
使用其他流的getpass()函数
该函数使程序员能够获取用户输入的密码。让我们通过下面的示例来理解这个函数:
示例:
# importing the getpass and sys modules
import getpass
import sys
# using the getpass() function with stream
my_pass = getpass.getpass(stream = sys.stderr)
# printing the statement
print("Entered Password:", my_pass)
输出:
Password:
# The inserted value is Admin
Entered Password: Admin
解释:
在上面的代码片段中,我们导入了 getpass 模块以及 sys 模块。然后我们定义了一个变量,使用 getpass() 函数,并将 sys.stderr 流作为函数的参数。然后我们打印一条语句来询问用户的密码。
理解getuser()函数
getuser() 函数返回用户的系统登录名。该函数检查计算机的环境变量,获取用户的名称并返回一个字符串。如果无法找到环境变量,则会引发异常。
让我们以基于 getuser() 函数的示例来检索计算机的用户名。
示例:
# importing the getpass and sys modules
import getpass
# using the getuser() function
my_user = getpass.getuser()
# printing the value
print("Username:", my_user)
输出:
Username: Mango
说明:
在上面的代码片段中,我们导入了 getpass 模块,并使用 getuser() 函数来获取存储在系统中的用户名。
现在,让我们考虑另一个示例,使用 getuser() 和 getpass() 函数获得用户名和密码。
示例:
# importing the getpass module
import getpass
# using the getuser() and getpass() functions
my_user = getpass.getuser()
my_pass = getpass.getpass("Enter Password:")
# printing the values
print("Username:", my_user)
print("Password:", my_pass)
输出:
Enter Password:
# The inserted value is Admin
Username: Mango
Password: Admin
解释:
在上面的代码片段中,我们导入了getpass模块,并定义了使用getuser()和getpass()函数获取用户名和密码的变量。然后,我们打印了这些值给用户。