使用docopt生成Python脚本参数项

简介

相比较optparse和argparse,docopt更节省程序员的编写脚本参数提示和参数项时间,但更随意和不规范,且代码维护性更差

使用案例:
# coding=utf-8
"""1                          #这儿写标题,-h的时候会被打印出来

Usage:                     #没有出现在Usage中的不规范用法,将会打印Usage段,并sys.exit(1)
  1.py D_IP init_instance [--configSvr] [--replname=<replSetName>] [-P PORT | --port=PORT] [--disk=data{}]
  1.py init_mongos [-P PORT | --port=PORT] [--instance=<IP>:<PORT>]
  1.py -h | --help

Arguments:             #可以直接输入参数,而不用输入参数名。其位置由上面的Usage定义
  D_IP  destination IP

Options:                                                                                  #对上面Usage中出现的参数的说明,
  -P PORT   Self port.                                                              #当一个参数项同时拥有-X --xx两种形式的表达方式的时候
  --disk=DATA_NUMBER    Install in /Data{}.                         #结果字典中返回的参数名为--xx
  --replname=<replSetName> ReplSet`s Name.                   #
                                                              # 传值的参数项有两种表达方式 -X YY --xx=YY 或 -X <yy>, --xx <yy>
                                                              #         前一种参数值提示应全大写,后一种用逗号分隔,提示应该用<>包裹

"""
from docopt import docopt

def concat_parameters(dict_a):
    opt_str = ''
    for i in dict_a.keys():
        # 如果该选项非false(有值,或True),且是--parameters,追加拼接到参数字符串中
        if dict_a[i]  and i[0:2] == '--':
            print('key:', i)
            opt_str = opt_str+' {}={}'.format(i,dict_a[i])
    print(opt_str)

if __name__ == '__main__':
    arguments = docopt(__doc__, version='0.1.1rc')  #借用了脚本的__doc__属性存放参数说明
        # version选项指定了脚本的版本信息
    # print(arguments)

    if arguments['init_instance']:
        D_IP = arguments['D_IP']
        concat_parameters(arguments)

    elif arguments['init_mongos']:
        pass
使用方式:

python 1.py init_instance --port=3304
参考连接

Github项目:docopt

转载于:https://blog.51cto.com/l0vesql/2124291

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值