首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >讨论--解析一种参数模式

讨论--解析一种参数模式
EN

Stack Overflow用户
提问于 2017-06-15 16:51:28
回答 1查看 820关注 0票数 2

我需要在表单中有一个命令行

代码语言:javascript
运行
复制
python script.py --step1=100 --step3=53 --step2=34

所需条件如下

  • 我不知道预先有多少--stepN标志
  • 没有设置--stepN标志的顺序,所以我不能只使用action='append'

我也对这些限制感兴趣:

  • 步长应该是连续的,所以如果使用--step20,但是缺少--step19,则这是一个错误。
  • 我想要一个列表中的值的目的地。因此,在上面的命令行示例中,我想执行以下操作
代码语言:javascript
运行
复制
args = parser.parse_args()
args.steps # is list [100, 34, 53]

argparse能不能采取一种农耕模式,不知何故,我可以写一个定制的动作或类型来做我想做的事?我在想

代码语言:javascript
运行
复制
parser.add_argument('--step*',
                    type=CustomType,
                    action=CustomAction,
                    help='Use --step1=a --step2=b, ....')
EN

回答 1

Stack Overflow用户

发布于 2017-06-15 17:23:45

这不是一个很好的argparse适合。有许多关于接受广义key=value输入的问题,以及各种可能的答案。在大多数情况下,答案相当于自己解析字符串,无论是来自sys.argv还是来自extras of parse_known_args

Create variable key/value pairs with argparse (python)

这与您添加的关于键的形式的要求是双重的。

在最近的这样一个问题中,我建议使用appendnargs=2,以便输入的形式如下:

代码语言:javascript
运行
复制
python script.py --step 1 100 --step 2 53 --step 3 34

生产

代码语言:javascript
运行
复制
Namespace(step=[[1,100], [2,53], [3, 24]])

你可以根据你的心愿来处理和价值检查。

Support arbitrary number of related named arguments with Python argparse

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44572898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档