做了一个类似工具包一样的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就可以省略了。有什么办法吗?
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就可以省略了。有什么办法吗?