如何在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
相关产品推荐
相关产品推荐

