Python getpass模块
时间:2020-02-23 14:42:45 来源:igfitidea点击:
在我们的许多Python程序中,我们需要获取秘密密钥,密码短语或者密码以进行秘密交易,或者识别用户是否被授权执行某项操作。
接受键时,需要注意很多事情,即不应将该短语回显到屏幕上,禁用语句的回显等。
使用Pythongetpass
模块,所有这些功能都是内置的。
让我们在示例中使用这个简单的模块,看看如何使用它。
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,没有提示
The password is the deafult prompt for the user. In next example, we will be customising it.
Python getpass自定义提示
要向用户提示您自己的消息,只需在getpass()函数中提供String参数:
import getpass pwd = getpass.getpass(prompt = 'Which is your favorite place to go?') if pwd == 'theitroad': print('Ofcourse!') else: print('Where is that?')
让我们看一下该程序的输出:getpass,带有自定义提示
This function is useful when you need to ask for secret passphrases apart from explicit passwords.
Python getpass与其他流
使用getpass()
函数也可以禁用密码的终端回显并将输入转移到任何其他流。
只需将stream
传递给函数:
import getpass import sys pwd = getpass.getpass(stream=sys.stderr) print('You entered:', pwd)
让我们看看该程序的输出:将密码传递给其他流
在没有终端的情况下获取密码
当您在Unix系统上工作时,getpass()
需要一个tty,可以通过termios进行控制。
这是必需的,以便禁用输入回显。
让我们在非Unix计算机上执行第一个示例代码:
echo "not dark" | python3 getpass_defaults.py