Python argparse 使用

Python argparse 使用


搬运自:极客教程——Python argparse 教程

1. 基本使用

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
import argparse # 导入模块

parser = argparse.ArgumentParser() # 初始化一个参数解析器

# 向参数解析器添加 track-buffer 参数 -buffer 和 --track-buffer分别表示参数的短名和长名
# track-buffer 参数可传入的数据的类型是int型,参数的默认值是30(如果没传入的话)
# help='tracking buffer'——阐述这个参数的含义
parser.add_argument('-buffer','--track-buffer', type=int, default=30, help='tracking buffer')
parser.add_argument('--input-video', type=str, default='test_video.flv', help='path to the input video')

# output-format参数只有['video', 'text']两个值可以选择,不传入时默认为video
parser.add_argument('--output-format', type=str, default='video', choices=['video', 'text'], help='Expected output format. Video or text.')
parser.add_argument('--output-root', type=str, default='results', help='expected output root path')

args = parser.parse_args() # 获取解析器中的所有参数,
print(args)

## 运行示例1
# python argparse_use.py
# out:
# Namespace(input_video='test_video.flv', output_format='video', output_root='results', track_buffer=30)

## 运行示例2
# python argparse_use.py -buffer 50 --output-format text
# out:
# Namespace(input_video='test_video.flv', output_format='text', output_root='results', track_buffer=50)

2. add_argument()中的其他功能函数(方法)

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# argparse_use.py
import argparse

# required arg

import argparse

# help flag provides flag help
# store_true actions stores argument as True

parser = argparse.ArgumentParser() # 初始化一个参数解析器

# 向参数解析器添加 output 参数 -o 和 --output分别表示参数的短名和长名
# action='store_true'——表示这个参数在终端不调用时默认为false;如果终端调用了output参数则为true
# help="shows output"——表示output参数的介绍信息(作用)
parser.add_argument('-o', '--output', action='store_true', help="shows output")

# 向参数解析器添加 name 参数
# required=True——表示在运行.py文件时需要显式的为参数name传入对应的值,例如:python argparse_use.py --name jason
parser.add_argument('--name', required=True)

# 向参数解析器添加 n 参数
# dest='now'——为n参数起了一个别名叫做now,以后可以通过args.now来获取到args.n的值
parser.add_argument('-n', dest='now', action='store_true', help="shows now")

# type=int——n参数能接收传入的值为的数据类型是 int, 其余解释同上
parser.add_argument('-n', type=int, required=True,
help="define the number of random integers")

# default=2——e参数在终端运行时如果没有传入对应值的话,默认值为2
parser.add_argument('-e', type=int, default=2, help="defines the exponent value")

# metavar='value'——简要介绍v参数表示value并会在帮助的输出中显示,注意这个和dest起别名的区别
parser.add_argument('-v', type=int, required=True, metavar='value', help="computes cube for the given value")

# action='append'——表示name参数或者n参数可以通过终端多次传入,然后先后执行不同的传入
# exp:python argparse_use.py --name jason -n yang --name he
# 先执行python argparse_use.py --name jason;然后再执行python argparse_use.py --name yang
parser.add_argument('-n', '--name', dest='names', action='append', help="provides names to greet")

# nargs=2——表示chars参数可以在一次传入中接收2个值,然后得到一个列表
# exp:python argparse_use.py --chars a b c
# 此时args.chars=['a', 'b' 'c']
parser.add_argument('--chars', type=str, nargs=2, metavar='c',help='starting and ending character')

# nargs='*'——表示num参数可以在一次传入中接收多个值,然后得到一个列表
parser.add_argument('num', type=int, nargs='*')

# choices=['std', 'iso', 'unix', 'tz']——表示now参数在传入相应值时只能选择['std', 'iso', 'unix', 'tz']之中的一个
parser.add_argument('--now', dest='format', choices=['std', 'iso', 'unix', 'tz'],
help="shows datetime in given format")

args = parser.parse_args() # 获取解析器中的所有参数,

print(args)

PS: 以上这些add_argument中的功能函数或者方法都可以叠加使用。

PS2: 上面在创建参数时有些用了相同的参数名,这只是方便,实际使用中不能使用相同的参数名。