我想要一个命令行参数为数组格式。如何使用docopt解析存储在数组中的数量未知的n个参数
即 myprogram.py -a 1,2,4,5
当参数使用DOC选择解析,我想看看
{'a' = [1,2,4,5]} #the length of this array could be as long as user may like.
我不知道,如果这是否可能。如果不是我能做出的最佳调整是什么?
我想要一个命令行参数为数组格式。如何使用docopt解析存储在数组中的数量未知的n个参数
即 myprogram.py -a 1,2,4,5
当参数使用DOC选择解析,我想看看
{'a' = [1,2,4,5]} #the length of this array could be as long as user may like.
我不知道,如果这是否可能。如果不是我能做出的最佳调整是什么?
你不会得到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)
正确的答案是使用省略号...
从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
}