有没有方法可以在将密码作为命令行参数传递时在 cmd 上回显密码?

Is there method such that password won't be echoed on cmd while passing it as command line argument?

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

示例代码-

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

现在 parameter/action 我应该添加什么来使输入密码 invisible/not 在屏幕上回显?

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

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

你想做的是this,

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