建议41:使用argparse处理命令行参数

# -*-  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'])
原文地址:https://www.cnblogs.com/tychyg/p/4935947.html