python - 多次指定相同的选项以收集多个子值(python argparse 子命令)
问题描述
我正在尝试这样做:
$ myfile.py config --user 'abc1' --password 'def1' --configname 'first' config config --user 'abc2' --password 'def2' --configname 'second'
config 是一个子命令(如 argparse.ArgumentParser 文档中所述,在 argparse 中添加子命令)。
这应该允许我从命令行收集任意数量的配置(在本例中为 2)的单个配置名称、用户名和密码。
这些我将坚持为
$ cat first
[user]
abc1
[password]
def1
$ cat second
[user]
abc2
[password]
def2
当我尝试这个时,我得到了
error: unrecognized arguments:
我怎样才能实现类似的功能。
这是我的代码:
>>> import argparse
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> subparsers = parser.add_subparsers(help='sub-command help')
>>> # create the parser for the "a" command
... parser_a = subparsers.add_parser('config', help='a help')
>>> parser_a.add_argument('--user', required=True)
_StoreAction(option_strings=['--user'], dest='user', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser_a.add_argument('--password', required=True)
_StoreAction(option_strings=['--password'], dest='password', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser_a.add_argument('--configname', required=True)
_StoreAction(option_strings=['--configname'], dest='configname', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args(['config', '--user', 'abc1', '--password', 'def1', '--configname', 'first'])
Namespace(configname='first', password='def1', user='abc1')
>>>
>>>
>>>
>>> import argparse
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> subparsers = parser.add_subparsers(help='sub-command help')
>>> # create the parser for the "a" command
... parser_a = subparsers.add_parser('config', help='a help')
>>> parser_a.add_argument('--user', required=True)
_StoreAction(option_strings=['--user'], dest='user', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser_a.add_argument('--password', required=True)
_StoreAction(option_strings=['--password'], dest='password', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser_a.add_argument('--configname', required=True)
_StoreAction(option_strings=['--configname'], dest='configname', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args(['config', '--user', 'abc1', '--password', 'def1', '--configname', 'first', 'config', '--user', 'abc2', '--password', 'def2', '--configname', 'second'])
usage: PROG [-h] {config} ...
PROG: error: unrecognized arguments: config
解决方案
推荐阅读
- javascript - 直接在购物车中编辑和保存 Shopify 行项目属性
- jquery - 使用 jquery 在单独的字段中更改显示
- python-3.x - 遍历带有列表的字典的结果不一致?
- powershell - 如何使用包含破折号的模块名称来限定命令?
- node.js - 无法使用 API 从 Google Drive 获取/下载文件
- c - 使用 strtok 和数组从文件读取并写入另一个文件
- byte - 将字节字符串转换为十进制
- javascript - 如何热重载包装在本机导入上下文中的模块?
- python - 如何对python列表元素进行聚类,以便每个聚类都可以给出相同的平均值?
- sql - PostgreSQL:基于 sum(field) < x 条件的页面大小分页