分享

Python 命令行参数使用docopt和docopt_dispatch的高级示例

 启辰ozkb3yjim4 2018-09-29
如docopt一样,使用docopt_dispatch可以在你的模块入口点中的__doc__变量中定义你的帮助信息。在那里,你调用dispatch,并使用文档字符串作为它的参数,这样它就可以在其中运行解析器了。

这样做,就不需要手动处理参数(这些往往都是在多层嵌套的if/else语句结构),而是仅仅处理你想要处理的参数,其他的参数让dispatch处理。
这就是dispatch.on装饰所要做的事情。你分配给它一个参数,或者一系列参数,这将会触发函数调用,这个函数将会以匹配值作为参数来执行。
"""Run something in development or production mode.
Usage: run.py --development <host> <port>
 run.py --production <host> <port>
 run.py items add <item>
 run.py items delete <item>
"""
from docopt_dispatch import dispatch
@dispatch.on('--development')
def development(host, port, **kwargs):
    print('in *development* mode')
@dispatch.on('--production')
def development(host, port, **kwargs):
    print('in *production* mode')
@dispatch.on('items', 'add')
def items_add(item, **kwargs):
    print('adding item...')
@dispatch.on('items', 'delete')
def items_delete(item, **kwargs):
    print('deleting item...')
if __name__ == '__main__':
    dispatch(__doc__)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多