2014-10-05 78 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 
} 
相关问题