gpt4 book ai didi

python - 带有 docopt 的两个参数的选项

转载 作者:行者123 更新时间:2023-12-01 01:54:50 25 4
gpt4 key购买 nike

我想要一个带有两个参数的选项。 IE。希望能够使用

$ ./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"

最佳答案

可以使用 docopt 轻松存档。

语法:Usage: ./foo [--path <src> <dst>]...

输入:./foo --path src1 dst1 --path src2 dst2

代码:

>>> from docopt import docopt
>>> doc = "Usage: ./foo [--path <src> <dst>]..."
>>> argv = "--path old1 new1 --path old2 new2".split()
>>> args = docopt(doc, argv)

结果:

{
"--path": 2,
"<dst>": [
"dst1",
"dst2"
],
"<src>": [
"src1",
"src2"
]
}

现在用它做一些事情:

>>> if bool(args["--path"]):
>>> n = 1 if args["--path"] is True else if args["--path"]
>>> for i in range(0, n)]:
>>> print("{}, {}".format(args["<old>"][i], args["<new>"][i]))
src1, dst1
src2, dst2
<小时/>

要添加多个位置参数,要求路径选项和参数的顺序正确,并带有括号“( )”。

Usage: ./foo [(--path <src> <dst>)]... <arg>...

注意: docopt 不会引发 SystemExit以防用户混淆语法并输入 ./foo arg --path src dst如果您使用带有多个参数的选项,就像这样。您必须自己处理它或在它前面添加另一个(子)命令。

Usage: ./foo [(--path <src> <dst>)]... bar <arg>...

关于python - 带有 docopt 的两个参数的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com