参考资料
argparseg官方文档:python3
argparseg官方文档:python3-中文
subparsers()
功能比较多的命令端程序常常将功能分解到不同子命令中,如在Python中常见的pip install、pip uninstall等。当程序比较复杂且不同功能都需要不同参数时,子命令是一个不错的方式。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33import argparse
def add(args):
r = args.x + args
print('x + y = ', r)
def sub(args):
r = args.x - args
print('x - y = ', r)
parser = argparse.ArgumentParser(prog='PROG')
subparsers = parser.add_subparsers(help='sub-command help')
#添加子命令 add
parser_a = subparsers.add_parser('add', help='add help')
parser_a.add_argument('-x', type=int, help='x value')
parser_a.add_argument('-y', type=int, help='y value')
#设置默认函数
parser_a.set_defaults(func=add)
#添加子命令 sub
parser_s = subparsers.add_parser('sub', help='sub help')
parser_s.add_argument('-x', type=int, help='x value')
parser_s.add_argument('-y', type=int, help='y value')
#设置默认函数
parser_s.set_defaults(func=sub)
args = parser.parse_args()
#执行函数功能
args.func(args)
运行命令1
2
3
4$python subc.py add -x 1 -y 2
x + y = 3
$python subc.py sub -x 1 -y 2
x - y = -1
add_argument() 方法
ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
定义单个的命令行参数应当如何解析。每个形参都在下面有它自己更多的描述,长话短说有:
1 | name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。 |
ArgumentParser 对象
1 | prog - The name of the program (default: os.path.basename(sys.argv[0])) |