2

我希望我的 python 程序能够解析像这样的参数的命令:

python dosomething.py z a1 b1 a2 b2 ...

我可以有任意数量的 a# b# 对,而 z 是一个不相关的数字。如有必要,我可以指定 a 和 b 对的数量。

我正在使用argparse

4

2 回答 2

3

您需要为此类特殊行为定义自定义操作

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
于 2013-07-02T05:14:53.547 回答
0
import sys

def main(args):
    print args[0]
    print len(args)
    print [arg for arg in args]

if __name__ == '__main__':
    main(sys.argv)
于 2013-07-02T04:53:06.057 回答