我希望我的python程序像这样的参数解析命令:
python dosomething.py z a1 b1 a2 b2 ...
我可以拥有任意数量的#b#对,而z是一个不相关的数字。如果有必要,我可以指定a和b对的数量。
我正在使用argparse。
答案 0 :(得分:3)
您需要为此类专门行为定义custom action。
import sys
import argparse
class AbsAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
if len(values) % 2 == 0:
# If valid, store the values.
setattr(namespace, self.dest, values)
# You could convert the flat list to a list of 2-tuples, if needed:
# zip(values[::2], values[1::2])
else:
# Otherwise, invoke a parser error with a message.
parser.error('abs must be supplied as pairs')
ap = argparse.ArgumentParser()
ap.add_argument('z')
ap.add_argument('abs', nargs = '+', action = AbsAction)
opt = ap.parse_args()
print opt
答案 1 :(得分:0)
import sys
def main(args):
print args[0]
print len(args)
print [arg for arg in args]
if __name__ == '__main__':
main(sys.argv)