gpt4 book ai didi

python - Docopt 在中间接受多个参数?

转载 作者:行者123 更新时间:2023-11-28 17:40:55 24 4
gpt4 key购买 nike

我希望我的脚本像“cp”命令那样接受命令行参数:

'''
Usage:
cp.py <source>... <directory>
cp.py -t <directory> <source>...
cp.py -s <source>... -t <directory>
'''

那些命令行

$ python cp.py src/path/1 src/path/2 target/path
$ python cp.py -t target/path src/path/1 src/path/2
$ python cp.py -s src/path/1 src/path/2 -t target/path

会得到相同的结果:

{'<source>':['src/path/1', 'src/path/2'],'<directory>': 'target/path'}

非常感谢。对不起我的英语:)

最佳答案

目前不支持

您不是唯一梦想拥有此类功能的人,请参阅 docopt 问题 #190 Repeating positional arguments followed by a single positional argument

重复参数后跟一个选项的歧义

重复位置参数后的选项使解析不明确。想象一个与命令选项同名的文件 - 您将如何指定它以及您期望得到什么结果?

建议的替代方案(更改命令行设计)

我会假设,您更喜欢将目标目录放在末尾以使其对用户直观。

带值的重复选项

Usage:
cp.py (-s <source>)... -t <directory>

这允许一个目标目录和多个源。

将重复的参数放在最后一个

Usage:
cp.py <directory> <source>...

这打破了目标是最后一个的偏好,但是很容易。

结论

  • 当前docopt 目前不支持该样式,cp 正在使用。一个原因是它并不容易,另一个原因是 cp 有时太复杂,甚至是模棱两可的。
  • 在选项后使用重复的参数总是很棘手,尽量避免这种情况。
  • 选项是可选的,因此使用必需的选项与易于使用命令行程序的这条规则相矛盾。
  • 目前,我的偏好是使用目标参数作为第一个位置参数,然后是重复的源位置参数。
  • 如果 docopt 允许多个位置参数后跟一组固定的位置参数,那就太好了,但这目前尚未实现。

关于python - Docopt 在中间接受多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24457166/

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