You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在docopt中指定可重复一次或多次的选项?

用docopt实现「至少一次、可重复」的命令行参数需求

嘿,我刚搞定了一个匹配你需求的Python命令行参数实现,正好分享给你:要求--o和--p这两个选项必须至少传一次,同时还允许重复多次传入,最后还得指定一个文件参数。下面把细节整理清楚:

合法的命令示例

这些写法都符合规则:

python test.py --o 1 --p a example.txt
python test.py --o 1 --o 2 --p a --p b example.txt

非法的命令示例

这些情况会被判定不合法,因为缺少了必要的选项:

# 只传了--o,没传--p
python test.py --o a example.txt
# 只传了--p,没传--o
python test.py --p a example.txt
# 两个选项都没传
python test.py example.txt

能正常运行的docopt脚本

用docopt的话,只需要在用法字符串里写对规则就行,下面是完整的可运行脚本:

#!/usr/bin/env python2.7
"""Test
Usage:
  test.py --o=<arg> [--o=<arg>...] --p=<arg> [--p=<arg>...] <file>
"""
from docopt import docopt

if __name__ == '__main__':
    args = docopt(__doc__)
    # 这里可以添加参数处理逻辑,先打印解析结果看看
    print("解析后的参数:")
    print(args)

简单解释下规则

  • --o=<arg>:没有方括号包裹,代表这个选项必须至少出现一次
  • [--o=<arg>...]:方括号表示可选,...代表可以重复多次,结合前面的必填项,就实现了「至少一次、可重复」的效果
  • 同理--p=<arg> [--p=<arg>...]也是一样的逻辑
  • <file>:没有方括号,是必须指定的位置参数

内容的提问来源于stack exchange,提问作者Calimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:30:37