# -*- coding:utf-8 -*- ''' 以现阶段最好用的参数处理标准库是argparse ''' import argparse parser = argparse.ArgumentParser() parser.add_argument('-o', '--output') parser.add_argument('-v', dest='verbose', action='store_true') args = parser.parse_args() #在type 参数的值不再是一个字符串,而是一个可调用对象 parser = argparse.ArgumentParser() parser.add_argument('bar', type=argparse.FileType('w')) parser.parse_args(['out.txt']) #扩展类型也变得更加容易,任何可调用对象,与type 类似,choices 参数也支持更多的类型 parser.add_argument('door', type=int, choices=range(1, 4)) #ArgumentParser 还支持参数分组 parser = argparse.ArgumentParser(prog='PROG', add_help=False) group1 = parser.add_argument_group('group1', 'group1 description') group1.add_argument('foo', help='foo help') group2 = parser.add_argument_group('group2', 'group2 description') group2.add_argument('--bar', help='bar help') parser.print_help() #add_mutually_exclusive_group(required=False) 就非常实用:它确保组中的参数至少 #有一个或者只有一个(required=True)。 #argparse 也支持子命令,使用ArgumentParser.add_subparsers() 就可以实现类似的功能。 parser = argparse.ArgumentParser(prog='PROG') subparsers = parser.add_subparsers(help='sub-command help') parser_a = subparsers.add_parser('a', help='a help') parser_a.add_argument('--bar', type=int, help='bar help') parser.parse_args(['a', '--bar', '1'])