Python:将 getpass 与 argparse 一起使用

标签 python passwords arguments prompt

我环顾四周,但找不到任何东西。

基本上我想知道是否可以将 getpass.getpass() 与 argparse 一起使用。

目前我有以下解决方法,我只是想知道是否有更好的方法:

import argparse
import getpass

parser = argparse.ArgumentParser(description="Some description")
parser.add_argument('-p', metavar="password", default="foobarblah123", help="password for user (default to prompt user)")
...
parsed_args = parser.parse_args()
args = vars(parsed_args)
user_pass = args['p']
if user_pass == "foobarblah123":
  user_pass = getpass.getpass()

我很确定这不是处理此问题的最佳方法,但是,需要为密码提供一个命令行选项......是否是最佳实践。

谢谢。

最佳答案

我想我可能找到了更好的方法来做到这一点。如何使用这样的自定义操作:

import argparse
import getpass

class PasswordPromptAction(argparse.Action):
    def __init__(self,
             option_strings,
             dest=None,
             nargs=0,
             default=None,
             required=False,
             type=None,
             metavar=None,
             help=None):
        super(PasswordPromptAction, self).__init__(
             option_strings=option_strings,
             dest=dest,
             nargs=nargs,
             default=default,
             required=required,
             metavar=metavar,
             type=type,
             help=help)

    def __call__(self, parser, args, values, option_string=None):
        password = getpass.getpass()
        setattr(args, self.dest, password)

parser.add_argument('-u', dest='user', type=str, required=True)
parser.add_argument('-p', dest='password', action=PasswordPromptAction, type=str, required=True)

args = parser.parse_args()

关于Python:将 getpass 与 argparse 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27921629/

相关文章:

python - numpy: "array_like"对象的正式定义?

python - 使用Python或Excel vba将单个Excel单元格内容拆分为不同的单元格

passwords - 是否值得在客户端对密码进行哈希处理

PHP - 加密其他站点的用户名和密码

visual-studio - 如何在命令行参数中将解决方案文件夹作为参数传递(用于调试)?

javascript - 如果我调用一个参数比定义接受的参数多的函数,会发生什么情况?

python - 是否有可能知道 python 进程正在运行哪个脚本?

python - 轮廓路径偶尔为空

python - 如何在ansible中设置多个ansible_python_interpreter变量

Java:设置预定长度的数组作为方法参数?