docopt creates beautiful command-line interfaces
oschina这样介绍这个模块:
Docopt 抛弃optparse和argparse吧,使用docstrings来构建优雅的,可读性强的,并且复杂(如果你需要的话)的命令行界面。Docopt 提供多种语言版本,包括:Java、Python、PHP、C/C++、.NET、D语言、Scala、Go 语言等.
简单试过后,它的主要特点是根据代码中的__doc__帮助信息直观映射到对应需要的变量参数。
比如: 我们的程序执行是这样:
python Demo.py -td abc def
-td是可选的控制开关
var1 var2 是传入的两个参数
则__doc__中这样写
#coding = utf-8
"""
docoptDemo程序
Usage:
docoptDemo [-gdtkz] <from> <to> <date>
Options:
-h --help Show this screen.
-g 高铁
-d 动车
-t 特快
-k 快速
-z 直达
Example:
docoptDemo -gdt beijing shanghai 2016-11-12
"""
from docopt import docopt
if __name__ == '__main__':
arguments = docopt(__doc__, version='Naval')
print(arguments)
输出结果为字典
{'-d': True,
'-g': False,
'-k': False,
'-t': True,
'-z': False,
'<date>': '2016',
'<from>': 'xian',
'<to>': 'beijing'}
通过字典arguments的不同key可以从中确认输入的各种参数值。
完整的使用及实例可以从github查看。