Python getpass模块禁用语句的回显获取密码
在我们的许多Python程序中,我们需要获取秘密密钥,密码短语或密码以进行秘密交易,或识别用户是否被授权执行某项操作。接受键时,需要注意很多事情,即不应将该短语回显到屏幕上,禁用语句的回显等。使用Python getpass模块,所有这些功能都是内置的。让我们在示例中使用这个简单的模块,看看如何使用它。
Python getpass模块
我们将以一种简单的方式来开始接受Python示例中的键,并通过为用户提供自定义提示逐步自定义用户体验。最后,我们将看到如何将密码流传输到其他位置,例如文件而不是终端。让我们开始吧。
Python getpass示例
让我们以一个非常基本的示例开始实验该模块,该示例从终端上的用户获取密码:
import getpass
try:
pwd = getpass.getpass()
except Exception as ex:
print('Error Occured : ', ex)
else:
print('Entered secret :', pwd)
让我们看一下该程序的输出:
没有提示的getpass
密码是用户的默认提示。在下一个示例中,我们将对其进行自定义。
Python getpass自定义提示
要向用户提示您自己的消息,只需在getpass()函数中提供String参数:
import getpass
pwd = getpass.getpass(prompt = 'Which is your favorite place to go?')
if pwd == 'JournalDev':
print('Ofcourse!')
else:
print('Where is that?')
让我们看一下该程序的输出:
带有自定义提示的getpass
当您需要询问除显式密码之外的秘密密码短语时,此功能很有用。
Python getpass与其他流
也可以通过getpass()功能禁用密码的终端回显并将输入转移到任何其他流。只需将传递stream给函数:
import getpass
import sys
pwd = getpass.getpass(stream=sys.stderr)
print('You entered:', pwd)
让我们看一下该程序的输出:
将密码传递到其他流
在没有终端的情况下获取密码
在Unix系统上工作时,getpass()需要可以通过termios控制的tty。这是必需的,以便禁用输入回显。
让我们在非Unix机器上执行第一个示例代码:
echo "not dark" | python3 getpass_defaults.py
让我们看一下该程序的输出:
没有终端
当我们在非Unix机器上执行该程序时,输出没有差异。否则,您只会not dark在屏幕上看到。
结论
在本课程中,我们研究了一种非常简单的方法,可以在Python程序中接受秘密值并将其流式传输到终端或任何其他可能的流和管道。