【发布时间】:2017-08-28 19:23:43
【问题描述】:
我有一个utility,它允许用户读取他们的~/.aws/credentials 文件并导出环境变量。
目前,CLI 界面如下所示:
usage: aws-env [-h] [-n] profile
Extract AWS credentials for a given profile as environment variables.
positional arguments:
profile The profile in ~/.aws/credentials to extract credentials
for.
optional arguments:
-h, --help show this help message and exit
-n, --no-export Do not use export on the variables.
我想在这里做的是提供一个ls 子解析器,它允许用户在他们的~/.aws/credentials 中列出有效的配置文件名称。
界面应该是这样的:
$ aws-env ls
profile-1
profile-2
...等等。有没有一种方法可以让我在 argparse 中本地执行此操作,以便在我的 -h 输出中显示一个选项,表明 ls 是一个有效命令?
【问题讨论】:
-
您是否真的尝试过添加子解析器? docs.python.org/3/library/argparse.html#sub-commands
-
我需要一个用于
ls命令的子解析器和一个用于匹配单个配置文件名称的通用子解析器,它可以是任何东西。这可能吗? -
我不确定我关注的是
ls子命令,结果是输出profile-1\nprofile-2或者您希望profile-X成为 arg 解析器的一部分?如果是后者,鉴于您没有提供凭证文件的选项,只需阅读它并提取配置文件并将它们添加到解析器。 -
@jonsharpe - 你的 SO 链接基本上说,在混合位置参数和子解析器时要小心。根据我的经验,当主解析器的所有参数都被标记(可选)时,子解析器工作得最好。
标签: python-2.7 python-3.x argparse