德里克参数分析器

darp的Python项目详细描述


这是一个pythonic参数分析器。它会自动转换 sys.argv到*args, **kwargs,并将它们传递给 希望。它还自动生成使用消息并处理python 类型检查/转换

例如,如果您有以下程序:

importdarpdefserve(name,port:int=8888):'''Example DArP (Derek's Argument Parser) app...'''print('running',name,'on',port)if__name__=='__main__':darp.prep(serve).run()

然后用参数运行它,您将得到以下输出:

$ python3 example.py
Example DArP (Derek's Argument Parser) app...
serve() missing 1 required positional argument: 'name'
usage: python3 example.py <name> [--port <int>]

所需参数

*arg参数始终是必需的。关键字参数(如 --port)可以按要求标记如下:

defserve(name,port:int=darp.REQUIRED):print('running',name,'on',port)if__name__=='__main__':darp.prep(serve,p='port').run()

如果在没有所需参数的情况下运行,则会打印此错误:

$ python3 example_required.py
serve() missing 1 required argument: '-p|--port'
usage: python3 example_required.py <name> --port <int>

快捷方式参数

关键字参数的前缀是--(类似于--port)。一个 shortcut参数是您希望脚本响应的时间 -p 7777好像用户键入了--port 7777。你指定这个 通过参数与darp.prep的关系,例如:

if__name__=='__main__':darp.prep(serve,p='port').run()

示例:

$ python3 example.py server -p 7777
running server on 7777
< H2>存在参数

没有值的关键字参数被认为是True,如果存在的话。 例如:

defdoit(dry_run=False):ifdry_run:print('doing a dry run...')else:print('doing it for real!')if__name__=='__main__':darp.prep(doit).run()

示例运行:

$ python3 example_existence.py --dry-run
doing a dry run...

注意--dry-run被映射到dry_runkwarg。

如果使用快捷方式,可以组合现有的参数。请参见:

defdoit(apple=False,banana=False):print('apple',apple)print('banana',banana)if__name__=='__main__':darp.prep(doit,a='apple',b='banana').run()

示例运行:

$ python3 example_squashed_existence.py -ab
apple True
banana True

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

推荐PyPI第三方库


热门话题
如何为纯Java应用程序启用ProGuard缩小?   java决定在GitHub上上载哪些文件   java如何编写SQL查询以从两个表中获取数据   java无法初始化类org。springframework。aop。框架DefaultAOpproxy工厂   如何在安卓中将kotlin集转换为java   更改程序中的java字符串、子字符串和ifelse语句   java Spring自动添加“XTotalCount”头   在Java中获取日期范围内的所有星期五   javafx滚动窗格不允许请求聚焦于某个字段   java如何在并行flux内的同一线程中运行mono   线程“main”java中的安装启动4j异常。lang.NoClassDefFoundError:javax/mail/MessaginException   java从GWT CellTable获取所有对象   java按钮视图即使在将其可见性设置为true后也不可见   java Spring 3.0处理文件上载问题   java Chromedriver元素在点(xxx,yyy)处不可单击。其他元素将收到单击:   java系统。加载抛出NoSuchMethodError   在Java中打开文件时出错   java子类何时以及为什么要声明父类的静态实例成员?