我想要一个带两个参数的选项 . 即我希望能够使用
$ ./foo --path "old" "new"
或者我真正想要的是:
$ ./foo --path "old" "new" --path "old" "new"
但我不知道该怎么做? (事实上我担心这可能不可能......)
我不想要什么,但哪个很接近
我知道如何重复选项(见下文),但这不是我想要的 .
#!/usr/bin/env python3
'''foo
Usage:
foo [--path ARG]...
Options:
--path=ARG Repeating option.
'''
import docopt
args = docopt.docopt(__doc__)
print(args)
可以调用
$ ./foo --path "old" --path "new"
3 回答
这可以使用docopt轻松存档 .
语法:
Usage: ./foo [--path <src> <dst>]...
输入:
./foo --path src1 dst1 --path src2 dst2
码:
结果:
现在用它做点什么:
要添加多个位置参数,需要使用parens“ ( ) ”使路径选项和参数的顺序正确 .
Attention: docopt不会引发
SystemExit
以防用户混淆语法并输入./foo arg --path src dst
如果您使用具有多个参数的选项 . 您必须自己处理它或在它前面添加另一个(子)命令 .使用docopt无法实现这一点 .
该项目的所有者gives原因如下:
我觉得这很合理 .
我建议使用两个选项,可能是
--from
和--to
,或--old-path
和--new-path
.或者,您可以改为使用argparse,并设置nargs选项(例如
nargs=2
) .你可以点击lib http://click.pocoo.org/5/options/