Python有很多写命令行应用的工具,如argparse, docopt, options...
这里记录一下关于docopt的相关用法。
#!/usr/bin/python
#-*- coding:utf-8 -*-
#######################################
#注意:Usage 必须写,且必须和Options间隔一行
#Usage 中的参数需在<>中,否则无效
#######################################
"""get args from cli.
Usage:
docopt_test [-abcd] <name> <age> <address>
Options:
-h,--help show all args
-a 参数1
-b 参数2
-c 参数3
-d 参数4
Example:
docopt_test zhangsan 22 上海
"""
from docopt import docopt
def test1():
arguments = docopt(__doc__)
print(arguments)
print 'name:%s \nage:%s \naddress:%s' %(arguments['<name>'],arguments['<age>'],arguments['<address>'])
options = ''.join([key for key, value in arguments.items() if value is True])
print arguments.items()
print options
print '******************************'
for key, value in arguments.items():
print key ,value
# print '--------------------------'
if __name__ == '__main__':
test1()
'''
E:\python>python docopt_test.py -ab jack 26 NewYork
{'-a': True,
'-b': True,
'-c': False,
'-d': False,
'<address>': 'NewYork',
'<age>': '26',
'<name>': 'jack'}
name:jack
age:26
address:NewYork
[('-d', False), ('-a', True), ('-c', False), ('-b', True), ('<address>', 'NewYork'), ('<name>', 'jack'), ('<age>', '26')]
-a-b
******************************
-d False
-a True
-c False
-b True
<address> NewYork
<name> jack
<age> 26
'''
相关docopt博客链接: https://www.jianshu.com/p/9ae4cf88e552