1. 程式人生 > >使用docopt生成Python腳本參數項

使用docopt生成Python腳本參數項

docopt optparse 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

使用docopt生成Python腳本參數項