另一个简单的助手: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标志出现在全局位置并由子命令重复。它起作用了 全局位置设置的默认值不会在下属中重新设置 位置。在

^{pr2}$

如果在add_command调用中重复某个标志,则第二个值和后续值将接收一个 OptionalOveride自动设置。在

parser.add_command("--glob xyzzy --glob", glob=dict(action=AtMostOnce))
# the second iteration becomes OptionalOverride

AtMostOnce作为操作类型提供;这会导致显式错误(而不是 如果一个标志被指定了多次。在

我们还有AppendN(t)作为操作类型。它的工作方式类似于Append,但是类型构造函数 t在结果追加到列表之前应用于其收集的参数。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java搜索按钮不适用于我   java制作一个应用程序来打开您自己的文件扩展名   XMemcached中的java异步集   java无法在Android上使用HTML5 canvas touch   java是否可以用PHP为Restlet创建客户端?   java在主题中添加图标。AppCompat。光   java Safari错误,无法打开浏览器   java gson解析json值中commaseparatedvalue字符串中的项   java如何使用Quarkus在卡夫卡的同一主题中设置多个使用者   java组织。json。JSONException:在{main}()的第6个字符处的main后面应该是“:”   windowbuilder如何将Java文件导出到GATE developer   java这与安卓 studio ide问题有关,在更新我们的ide之后   java Android将活动加载到类中<?>对象   java如何在springdatajpa中使用DISTINCT、GROUP BY和ORDER BY?   使用jlink的java可复制构建