0

我正在尝试构建一个在各种平台上运行的 Python 应用程序,为此我正在为参数添加命令行选项,其中两个是用户名和密码。对于密码,我不希望它在有人输入时在屏幕上回显,我正在使用 argparse

示例代码-

parser.add_argument('--username', help='Your email address')
parser.add_argument('--password', help='Your password')

现在我应该添加什么参数/动作以使密码在输入时不可见/不回显在屏幕上?

4

1 回答 1

2

在 python 中,我们可以使用getpass如下:

>>> import getpass
# parse arguments here
>>> user = args.username  # e.g. Sam
>>> password = getpass.getpass('Enter %s password: '% user)
Enter Sam password:
>>>

你想做的是这个

class Password(argparse.Action):
    def __call__(self, parser, namespace, values, option_string):
        values = getpass.getpass()
        setattr(namespace, self.dest, values)

parser = argparse.ArgumentParser()
parser.add_argument('--password', action=Password, nargs='?', dest='password')
args = parser.parse_args()
password = args.password
于 2020-12-22T10:22:12.610 回答