合并blargument解析器中的参数。
blargparse的Python项目详细描述
blargparse扩展了argparse.ArgumentParser, 添加可以帮助您分离的add_aggregate方法 你的用户界面逻辑。
如何使用
从pypi安装。
pip install blargparse
这是最简单的使用方法。
b = BlargParser() b.add_argument('--left', '-l', type = int, default = 0) b.add_argument('--right', 'r', type = int, default = 100) b.add_aggregate('numbers', lambda args: range(args.left, args.right)) b.parse_args([]).numbers == range(0, 100)
你可以得到一点幻想。
b = BlargParser() b.add_argument('--left', '-l', type = int, default = 0) b.add_argument('--right', 'r', type = int, default = 100) def f(args): output = range(args.left, args.right) del(args.left, args.right) b.add_aggregate(f) b.parse_args([]).numbers == range(0, 100)
为什么
我写布拉格帕斯是因为我发现自己在做这样的事情。
# Construct the parser. a = argparse.ArgumentParser() a.add_argument('--left', '-l', type = int, default = 0) a.add_argument('--right', 'r', type = int, default = 100) # Parse the arguments import sys ns = a.parse_args(sys.argv) # Convert them into the form I want for my application. numbers = range(ns.left, ns.right)
在编写 事情是numbers范围,但我认为如果 最终用户可以将此范围指定为--left和 --right标志我可能想根据 用户似乎更喜欢。
上面的方法很好,因为它很小,但是我有几个 像这样的争论在不同的地方蔓延开来, 以及参数的构造、解析和转换 在函数甚至文件中分布。
加上香草味的argparse,我最终做了这样的事情。
def _build_subparsers(argparser): 'This adds subparsers to the parser.' subparsers = argparser.add_subparsers() # ... def _apply_aggregates(args): args.range = range(args.left, args.right) del(args.left, args.right) argparser = argparser.ArgumentParser() _build_subparsers(argparser) args = argparser.parse_args() _apply_aggregates(args)
这是一个更好的办法,只不过它把次级股放在一起 聚合在一起。我想让次级罪犯和 聚合,我不想按某个东西是否是 亚类或聚合体;我认为聚合体是 传讯者
另一个更令人困惑的选择是我自己 上面的非argparse接口用于指定 次级股和总股。