当用户在控制台中运行脚本时,我需要隐藏密码(例如:mysql -p
)。
对于输入参数,我使用 argparse ,如何将 getpass 添加到密码参数?
parser = argparse.ArgumentParser()
parser.add_argument('-p', action='store', dest='password', type=getpass.getpass())
当我运行我的脚本时:python script.py -u User -p
我输入密码(Password:
)的单独行,但在输入raise Exception之后:ValueError: 'my_password' is not callable
答案 0 :(得分:5)
这家伙应该解决你的问题:getpass
以下是自定义操作的示例
class PwdAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
mypass = getpass.getpass()
setattr(namespace, self.dest, mypass)
parser = argparse.ArgumentParser()
parser.add_argument('-f', action=PwdAction, nargs=0)
答案 1 :(得分:0)
答案 2 :(得分:-1)
简短回答:不,你不能!
argparse
模块不打算这样做。
您应该在其他分离的进程中询问密码。
此外,type
参数只是存储值之前使用的值转换器。