2014-10-05 43 views

回答

1

你不會得到docopt來做到這一點,因爲逗號分隔列表被視爲可選參數。但是你可以很容易地做自己算賬:

""" 
Example of program with many options using docopt. 

Usage: 
    myprogram.py -a NUMBERS 

Options: 
    -h --help   show this help message and exit 
    -a NUMBERS   Comma separated list of numbers 
""" 

from docopt import docopt 

if __name__ == '__main__': 
    args = docopt(__doc__, version='1.0.0rc2') 
    args['-a'] = [int(x) for x in args['-a'].split(',')] 
    print(args) 
0

正確的答案是使用省略號...

從docopt文檔

......(省略號)一個或多個元素。爲了指定可以接受任意數量的重複元素,使用省略號(...),例如, my_program.py FILE ...表示接受一個或多個FILE-s。如果要接受零個或多個元素,請使用括號,例如:my_program.py [FILE ...]。省略號在左邊的表達式上作爲一元運算符工作。

使用online parser可以看到輸出。

鑑於

Naval Fate. 

Usage: 
    naval_fate.py ship new <name>... 
    naval_fate.py -h | --help 
    naval_fate.py --version 

Options: 
    -h --help  Show this screen. 
    --version  Show version. 

一個docopt的ship new 1 2 3 4輸入會給你下面的分析信息

{ 
    "--help": false, 
    "--version": false, 
    "<name>": [ 
    "1", 
    "2", 
    "3", 
    "4" 
    ], 
    "new": true, 
    "ship": true 
} 
相關問題