另一个简单的助手: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仅在findViewById()下显示一个ImageButton   在Java Graphics2D中,文本如何在矩形上居中对齐?   java需要一个用于电子表格计算器的正则表达式   ^java中的运算符   java通过一些属性配置文件根据环境动态更改wsdl端点URL   java Ebean/Play框架关系未更新   集合如何将POJO列表转换为Java流中的映射<String,List>?   java为什么JFrame不显示整个图像?   java如何将调用静态导入的泛型方法的结果传递给另一个方法?   迭代器或foreach中的java延迟   需要java socket logback日志接收器   在Java中初始化Map的静态数组   雅加达邮件Java MimeMail:解码后获得额外字符   java为什么这个xmldom解析器不能正确解析rtept、name和cmt标记?   java如何刷新Log4J2中的异步记录器(带中断器)   java使用构建插件pom生成的jar。xml作为同一pom中的依赖项   java基于位置的序列ADT如何在O(1)时间内插入元素?   java ORM实体与DDD实体   Java对象分配