德里克参数分析器
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