argparse:从CLI参数构建字典列表?

问题描述 投票:0回答:1

设计分层的CLI程序。类似于:

$ python -m foo -'{' -c 'wow' -b 'has' -d 55 -'}' \
                -'{' -c 'haz' -b 'wow' -'}' \
                -'{' -d 56 -'}'

我想return

[
    { 'c': 'wow', 'b': 'has', 'd': 55 },
    { 'c': 'haz', 'b': 'wow' },
    { 'd': 56 }
]

主要问题:如何在argparse中构建此代码,即没有在argparse之后运行的单独功能?

辅助问题:是在CLI界面中构建这样的层次结构,即不是在外部json文件中还是以vars(parser.parse_args())的形式构建,而是因为适当的CLI属性/值违反了某些约定,所以应该让我重新考虑这种设计吗?

PS:我可以使用type=yaml.loads,一个额外的sys.argv和一个范围标量在不使用argparse的情况下轻松创建它。但是sys.argv会给我自动帮助,自动完成,默认值,类型安全等等……所以更喜欢使用它。

python command-line command-line-interface command-line-arguments argparse
1个回答
1
投票

我认为,CLI参数应该相当简单,这是一种宽松的“约定”;一旦开始在命令行上添加大量数据,那么也许您应该重新考虑您的设计。毕竟,文件旨在保存数据。

© www.soinside.com 2019 - 2024. All rights reserved.