我希望我的 python 程序能够解析像这样的参数的命令:
python dosomething.py z a1 b1 a2 b2 ...
我可以有任意数量的 a# b# 对,而 z 是一个不相关的数字。如有必要,我可以指定 a 和 b 对的数量。
我正在使用argparse。
我希望我的 python 程序能够解析像这样的参数的命令:
python dosomething.py z a1 b1 a2 b2 ...
我可以有任意数量的 a# b# 对,而 z 是一个不相关的数字。如有必要,我可以指定 a 和 b 对的数量。
我正在使用argparse。
您需要为此类特殊行为定义自定义操作。
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
import sys
def main(args):
print args[0]
print len(args)
print [arg for arg in args]
if __name__ == '__main__':
main(sys.argv)