我想使用argparse来构建一个带有子命令的工具。可能的语法是python argparse子命令依赖和冲突
/tool.py下载--from 1234 --interval 60
/tool.py下载--build 1432个
/tool.py干净--numbers 10
所以我想argparse使用来实现:
- 确保 '--from' 和 '--interval' 是一个lways一起使用
- 确保“--build”不会与其它参数
使用,但我没有找到一个方法来配对“--from”和“--internal”为一组,然后使该组与'--build'互斥。
下面是我目前的代码,它只会使'--from'和'--build'是互斥的。既不确保' - 从'和' - 间隔'在一起,也不确保' - 间隔'和' - 建立'是互斥的。
parser = argparse.ArgumentParser(description='A Tool')
subparsers = parser.add_subparsers(help='sub-command help')
#create the parser for the 'download' command
download_parser = subparsers.add_parser('download', help='download help')
download_parser.add_argument('--interval', dest='interval', type=int,help='interval help')
group = download_parser.add_mutually_exclusive_group()
group.add_argument('--from',type=int, help='from help')
group.add_argument('--build', type=int, help='interval help')
例如,
/tool.py下载--from 1234
不应该被允许的,因为 '--from' 必须以 '--interval' 工作。但是我的代码默默接受它。
而且
/tool.py下载--interval 1234 --build 5678
不应该被允许的,因为 '--build' 不能与其他参数一起使用。但我的代码也接受它。
任何建议将不胜感激。谢谢。
你的代码有,但究竟是不是工作?给出一个错误行为的例子,并解释你期望如何。 – 2011-03-02 09:29:19
我加了2个错误行为的例子。感谢您的建议。 – Landy 2011-03-02 10:09:18