另一个简单的助手:parse-trees
argparse-helper的Python项目详细描述
还有一个argparse助手:复杂的子命令树变得简单
使用argparse
编写复杂的子命令解析器当然是可能的,但它涉及很多方面
费力的重复。在
这个库为argparse
提供了一个小包装,它添加了一个方便的方法。那个
允许您指定组成命令的单词序列,以及标志和
同时传递这些标志的定义。在
parser = ArgumentParser()
parser.add_command("foo bar baz --json",
func=lambda *args: print("foo-bar-baz"),
json=dict(default=False, action="store_true"),
)
parser.add_command("foo bar quux",
func=lambda *args: print("foo-bar-quux"),
)
将在生成的命名空间上设置func
参数。注意,没有特殊要求
对于必须传递给func
的参数-这由库用户定义。在
另外,还提供了一个新的argparse.Action
子类,OptionalOverride
。这支持
使same标志出现在全局位置并由子命令重复。它起作用了
全局位置设置的默认值不会在下属中重新设置
位置。在
如果在add_command
调用中重复某个标志,则第二个值和后续值将接收一个
OptionalOveride
自动设置。在
parser.add_command("--glob xyzzy --glob", glob=dict(action=AtMostOnce))
# the second iteration becomes OptionalOverride
AtMostOnce
作为操作类型提供;这会导致显式错误(而不是
如果一个标志被指定了多次。在
我们还有AppendN(t)
作为操作类型。它的工作方式类似于Append
,但是类型构造函数
t
在结果追加到列表之前应用于其收集的参数。在
- 项目
标签: