我想要一個命令行參數爲數組格式。如何使用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
}