合并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接口用于指定 次级股和总股。

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

推荐PyPI第三方库


热门话题
java编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像