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

时间:2023-03-10 07:04:49
建议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', ''])