这是一个创建于 3522 天前的主题,其中的信息可能已经有所发展或是发生改变。
做了一个类似工具包一样的py程序,我想让这个工具包达到一些像CLI一样的效果。比如:
python tools foo1 arg1
python tools foo2 [-v] arg1 arg2
大致代码如下:
parser = argparser.ArgumentParser()
parser.add_argument('foo', type=str, choices=['foo1', 'foo2'])
parser.add_argument('-a1', '--arg1')
parser.add_argument('-a2', '--arg2')
用parser.foo来做功能选择,是positional arg。其中foo1要接一个参数,foo2接两个。接的参数是optional args。
现在的问题是,如果是这样写,那么实际效果是:
python tools foo1 -a1 arg1
python tools foo2 -a1 arg1 -a2 arg2
我想在foo1的时候后面跟一个positional arg,foo2的时候后面跟两个positional arg,这样命令中的-a1和-a2就可以省略了。有什么办法吗?
7 条回复 • 2015-03-01 21:45:14 +08:00
|
|
1
xxr3376 2015-02-27 14:51:15 +08:00 1
我用click。。
|
|
|
2
zerh925 2015-02-27 15:01:37 +08:00
|
|
|
3
lilydjwg 2015-02-27 18:17:37 +08:00
用 subparser?
|
|
|
5
chilaoqi 2015-02-27 23:38:45 +08:00
argparse的文档看下,用narg应该很容易满足。 但是感觉按照你的需求自己写判断是不是更简单了?
|
|
|
7
aec4d 2015-03-01 21:45:14 +08:00
|